kill возвращает 0, если сигнал был отправлен, и -1, если сигнал не был отправлен. Сигнал не может быть отправлен, если процесс уже завершен, поэтому возвращаемое значение kill может использоваться, чтобы сообщить вам, был ли процесс уничтожен kill или уже мертв.
Кроме того, вы можете использовать один из системных вызовов wait для просмотра изменения состояния (включая выход) дочернего процесса.
Вам также следует изучить обработку сигналов в родительском процессе для SIGCHLD, которую родитель получит, когда дочерний объект изменит состояние (включая выход), и также выведет родителя из состояния сна (хотя в некоторых системах функция сна может возобновить сон).
Используя wait и / или SIGCHLD, вы можете быстрее завершить родительское задание, если ребенок ушел из школы в течение вашего срока.
Вы должны заметить, что вам, вероятно, следует вызвать wait для завершения дочерних процессов, чтобы вы не создавали зомби (процессы, которые вызвали exit, но должны быть сохранены на случай, если родитель захочет посмотреть их состояние выхода).
Еще одна вещь, которую вы захотите рассмотреть, это значение errno EINTR, которое могут быть установлены системными вызовами, если они были прерваны сигналом.
В командной строке введите:
man errno
man 2 wait
man 2 sigaction
для получения дополнительной информации о вещах, о которых я говорил.