Поймать сигнал уничтожения, когда процесс находится в состоянии S

Это группа процессов: ( ps -ejH )

  xxxx xxxx xxxx ? 00:00:00 sshd yyyy yyyy yyyy ? 00:00:00 sshd 8713 8713 8713 pts/0 00:00:00 bash 1234 1234 1234 ? 00:00:00 Process 1 5678 1234 1234 ? 00:00:00 openvt 3789 3789 3789 tty4 00:00:00 Python process 

Состояние процессов:

Process1: Ss [Прерывистый сон и лидер сеанса]

openvt: S [Прерывистый сон]

Процесс python: Ss + [Прерывистый спящий режим и лидирующий сеанс и процесс переднего плана]

Я работаю в терминале / dev / pts0 [8713] bash.

Когда я отправляю kill 1234 , он убивает process1 один, но не его дочерний процесс. поэтому я написал функцию в Process1, которая убивает свои подпроцессы, прежде чем выйти из нее.

Когда я вызываю эту функцию, используя ловушку, как:

 trap function_name SIGTERM 

и отправив kill 1234 или kill -15 1234 или kill -s TERM 1234 , функция ловушки не фиксирует сигнал для вызова функции, которую я написал.

снова, когда я удаляю команду trap из process1 и вызывая kill 1234 , он убивает procces1.

Я думаю, что контроль выполнения находится на openvt, а не на process1, когда оба работают в фоновом режиме, и из-за этой команды kill не получает процесс1.

Теперь, как заставить process1 получить команду kill?

PS: openvt открывает новый виртуальный терминал для запуска процесса python. команда, используемая для этого: openvt -f -s -c 4 -w python_process . Команда -w ждет завершения команды.

Примечание: из linux-журнала Если процесс получает сигнал, когда он находится в состоянии прерывистого ожидания, например, ожидая терминального ввода-вывода, ядро ​​пробудит процесс обработки сигнала. Если процесс получает сигнал, когда он находится в режиме бесперебойного сна, например, ожидая ввода / вывода на диск, ядро ​​откладывает сигнал до завершения события.

Сигнал Kill, который я отправил процессу1, находится в состоянии прерывистого сна (S), но ядро ​​отклоняет сигнал. Почему?

На этом основании есть почта , но она не решена.

update 1: Когда я убиваю все дочерние процессы родительского процесса с помощью команды pkill -TERM -p pid, и когда я вызываю kill pid, сигнал улавливается командой trap.

Interesting Posts

Использование Pipeline для прямых файлов для программы, которая открывает их

Как указать совпадающие шаблоны, исключая некоторые файлы с PATTERN в именах файлов

Использование vlock без изменения VT от X

Запросы Proxify dns в командной строке

Как перезапустить мой сервер автоматически, используя crontab, если они спустились?

$ @ кроме первого аргумента

Установите оболочку по умолчанию как bash для пользователей, не находящихся в / etc / passwd

массив рейдов не установлен

Есть ли раздел пользователя или другой репозиторий doc для определения структуры данных?

Я получаю сообщение об ошибке «mysqld dead, но файл pid существует»

Как заблокировать устройства USB на основе класса устройств в Linux

Настройка свойств nvidia при запуске X-сервера

Chrome OS и OpenVPN

Невозможно изменить размер раздела с помощью resize2fs

Не удается открыть как корневой терминал, так и nautilus (в Debian 7) после обновления графического драйвера Intel

Linux и Unix - лучшая ОС в мире.