Я пытаюсь отправить сигнал SIGTSTP дочернему процессу. Проблема, с которой я сталкиваюсь, заключается в том, что отправка SIGTSTP в дочерний процесс останавливает всю мою программу, и вызывающий не может продолжить выполнение остальной части программы. Вот мой кодОтправка SIGTSTP приостанавливает всю программу
cmd := exec.Command("ping", "google.com")
stdout, _ := cmd.StdoutPipe()
cmd.Start()
io.Copy(os.Stdout, stdout)
cmd.Wait()
Выполнение этого кода, я получаю выход из ping google.com
напечатанный на терминале. Когда я нажимаю ctrl-z
, выход останавливается, но программа больше не может принимать сигналы или делать что-либо еще, если SIGCONT не отправляется дочернему процессу. Я что-то упускаю? Как приостановить дочерний процесс, но возобновить выполнение вызова? Благодарю.
hmm Как приостановить его, не заблокировавшись ожиданием? – seal198
Не ждите, что это блокирование. Это io.Copy, который не возвращается после приостановки дочернего процесса. io.Copy возвращается только на EOF. – seal198