Как контролировать сигнал SIGTSTP для дочерних процессов? - PullRequest
0 голосов
/ 04 октября 2009

Я пишу оболочку. Он разветвляет фоновые и передние процессы. У меня проблема с сигналом SIGTSTP. Таким образом, после нажатия Ctrl ^ Z генерируется SIGTSTP, так как этот сигнал доставляется в мою оболочку и ее дочерние процессы (все фоновые и передние процессы, которые моя оболочка разветвила). Но, как и в реальной оболочке, SIGTSTP доставляется только приоритетным процессам, а не фоновым процессам. Итак, как контролировать это поведение, предотвращая отправку сигнала в фоновые процессы моей оболочки?

Я также пробовал setpgid(), что означает изменение pgid фоновых процессов. Но как только процесс выполнил exec, setpgid() возвращает ошибку.

1 Ответ

1 голос
/ 04 октября 2009

Если вы установите свой собственный обработчик для SIGTSTP, вы можете контролировать его распространение для ваших детей (или нет). Поскольку вы пишете оболочку, вы, вероятно, захотите сделать это с помощью нескольких других сигналов (по крайней мере, SIGINT).

Не может setpgid после того, как у ребенка exec ed? Спокойно, звоните setpgid до ребенка exec с. Вам не нужно менять его потом - ndash; Каждое задание должно иметь уникальный pgid, и вы должны продолжать настраивать контрольную группу терминала в соответствии с предполагаемым активным заданием pgid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...