2016-05-23 3 views
-2

Посмотрев на синтаксис сигнала, я вижу, что он не дает гибкости передачи сигнала другому pid (pid_t). процесс может только игнорировать, выполнять по умолчанию или настраивать действие сам по себе. каковы возможные способы передачи сигналов другому процессу? (Я не говорю о pthreads).Как передать сигнал другому процессу?

+2

«Человек убивает» отвечает на ваш вопрос? – SergeyA

+0

также добавить, что я исключаю возможность использования команды оболочки для передачи сигнала или использования exec для процесса уничтожения или отправки сигнала – theartist33

+0

@SergeyA Я просто упоминаю, что в моем предыдущем комментарии, не ища команду kill – theartist33

ответ

4

Вы хотите (не команда kill оболочки) kill(2) system call:

#include <sys/types.h> 
#include <signal.h> 

int kill(pid_t pid, int sig); 

kill() системного вызова может быть использован для отправки любого сигнала любого процесса группы или процесс.

Если pid положительный, тогда сигнал sig отправляется процессу с идентификатором , указанным pid.

Если pid равно 0, тогда sig отправляется каждому процессу процесса группе вызывающего процесса.

Если pid равно -1, то sig отправляется каждому процессу, для которого процесс вызова имеет разрешение на отправку сигналов, за исключением процесса 1 (init), но см. Ниже.

Если pid меньше -1, тогда sig отправляется каждому процессу в группе процессов , чей идентификатор является -p.

Если sig равно 0, тогда никакой сигнал не отправляется, но проверка ошибок по-прежнему выполняется ; это можно использовать для проверки наличия идентификатора процесса или идентификатора группы процессов.

Запуск man kill даст вам kill (1), который является командованием оболочки. Чтобы получить справочную страницу для системного вызова, вы запускаете man 2 kill.

Смежные вопросы