Может быть непросто заставить фокус на дочернем процессе, чтобы он получал события клавиатуры.
Вы всегда можете использовать команду kill
для отправки сигнала данному процессу. Не позволяйте имени kill вводить вас в заблуждение, вы можете отправить любой сигнал с помощью kill, kill -SIGNUM pid
, но по умолчанию используется SIGTERM, что обычно приводит к завершению процесса.
Итак, если вы хотите отправить сигнал SEGV на процесс 11, вы бы сделали
kill -SEGV 11
Вы можете настроить родителя на перехват сигнала, повторно отправить его ребенку с помощью вызова kill (2), а затем дождаться выхода ребенка с помощью waitpid.
Обработчик сигнала родителя хотел бы что-то вроде этого:
int status;
kill(child_pid, SIG_TO_SEND);/*send to child*/
waitpid(child_pid, &status);/* wait for child to give up */
Если вы серьезно относились к сохранению родительского статуса и знали, что сигнал предназначен только для ребенка, вы, вероятно, установите переменную в родительском элементе, выйдете из обработчика сигнала, а затем выполните работу по отправке и ожиданию ребенок. В общем, хорошо как можно быстрее выходить из обработчиков сигналов.