Имею простейший код, который просто в течении 5/3 секунды выводит числа.
func main() {
flag.Parse()
for i := 0; i < 5; i++ {
fmt.Println(flag.Arg(0), i)
time.Sleep(time.Second / 3)
}
}
В другой программе я в цикле запускаю "go run first.go %{i}", где i - просто индекс цикла и жду завершения процесса. Но через секунду после запуска я убиваю процесс (cmd.Process.Kill()). cmd.Wait() разблокировывается, процесс считается убитым, цикл начинается сначала. Вот только числа продолжают выводиться до конца работы программы (5/3 секунды). Как такое возможно, что процесс вроде убитый, но при этом продолжает работать?
Вот весь код
Есть подозрение, что я убиваю go, а вот дочерний процесс (бинарник, скомпилированный go) отходит к init, потом заканчивает свое действие и умирает. Тогда нужно или собирать самому и запускать бинарник, или узнать, как убить go вместе с запущенным бинарником.