Описание тега sigchld

1 ответ

Невозможно игнорировать сигнал CHLD, форсируя значение по умолчанию

#include <sys/types.h> #include <stddef.h> #include <stdlib.h> #include <sys/wait.h> #include <signal.h> #include <iostream> #include <unistd.h> int main(){ signal(SIGCHLD,SIG_IGN ); pid_t pid = vfork(); if…
18 авг '17 в 17:07
2 ответа

Обновление массива из main:: в функции обработчика сигнала (Perl)

Я хотел бы сохранить массив pidlist детей, которых я раздвоил, а затем удалить их по мере их выхода (чтобы ограничить количество разветвленных процессов, которые у меня есть в любой момент времени). Я подумал, что мог бы быть умным и сделать это, ис…
08 мар '11 в 05:18
2 ответа

Waitpid прерван системным вызовом

Я разветвляю дочерний процесс для запуска команды, используя execve, Я устанавливаю и определяю 3 обработчика сигналов: SIGCHLD,SIGINT и SIGSTP следующим образом: void sigchld(int sig) { while((pid=waitpid(-1,&stat,WNOTRACE|WNOHANG))>0) { if(…
02 ноя '15 в 02:05
1 ответ

Perl, нет дочернего процесса с "открытым"

Привет у меня есть проблема, когда скрипт perl выплевывает "Не найден дочерний процесс"... Мой скрипт вызывает несколько разных типов вилок, поэтому я попытался реализовать метод реализации perdoc waitpid(), чтобы иметь возможность использовать hand…
03 окт '12 в 21:05
2 ответа

Будет ли дочерний процесс отправлять SIGCHLD в abort()?

Если приложение делает fork() и ребенок умирает с abort() (из-за сбоя assert()), родительский процесс получит SIGCHLD? Если это уместно, это на Debian 4 (gcc версии 4.1.2).
01 окт '10 в 09:16
2 ответа

Цепочка сигналов Java

У меня есть программа со специализированным Processкласс -типа, который обрабатывает процессы, выполняемые непосредственно в Linux. Он вообще не использует Java-класс Process, потому что ему требуется особая обработка процесса. Из-за этого он также …
1 ответ

Родительский процесс не ожидает выхода всех детей, используя signal()

Первоначально программа просит пользователя ввести количество дочерних процессов для создания. После создания потомков родитель спит и ожидает завершения всех своих потомков с помощью функции обработчика сигнала 'handle_child', зарегистрированной в …
13 апр '15 в 07:59
2 ответа

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

Когда дочерний процесс завершается, он отправляет SIGCHLD в родительский процесс. Теперь, если родительский процесс имеет более одного дочернего процесса, откуда родительский процесс знает, какой дочерний процесс отправил сигнал?
06 ноя '13 в 13:21
2 ответа

Обработка сигналов SIGCHLD

В Unix, когда дочерний процесс в фоновом режиме завершается, он отправляет SIGCHLD сигнал родителю, чтобы сообщить ему, что он прекратил. Происходит ли то же самое, даже если процесс был на переднем плане? Если так, это означает, что родитель просто…
23 мар '12 в 20:18
1 ответ

C - При каких условиях вызов waitpid() вернет -1, сигнализируя об ошибке?

Я пишу обработчик SIGCHLD, и мне интересно, при каких условиях вызов waitpid() вернет -1? Более конкретно, если я создаю цикл, в котором я вызываю waitpid(...) и хочу, чтобы он выполнялся до тех пор, пока не будут собраны все завершенные дочерние пр…
05 июл '14 в 12:46
3 ответа

SIGCHLD не пойман

Я намереваюсь следующий код для форка и исполнения "сна 3" как ребенка, в то время как родительский процесс спит в течение 10 секунд. Я ожидаю, что родительский процесс получит SIGCHLD через 3 с, когда "сон 3" закончится. Этого не происходит, вместо…
14 авг '13 в 09:38
1 ответ

Правильный способ обработки SIGCHLD, EINT и accept() в Linux

У меня есть программа, которая создает TCP-сервер. Когда accept() подключается к клиенту, я выполняю fork() и обрабатываю соединение. Когда этот клиент покидает его, он вызывает waitpid() из-за SIGCHLD, но это вызывает EINTR в accept(). Мой вопрос, …
11 сен '15 в 18:58
0 ответов

Обучение fork() простаивающим процессам в C++

Вот пересмотр моей проблемы программирования: Отключите два бездействующих процесса, которые запускаются в течение произвольного времени, каждый из которых работает от 0 до 20 секунд. Процессы должны использовать сигналы SIGSTOP и SIGCONT для планир…
28 мар '14 в 08:49
2 ответа

Переустановка обработчика SIGCHLD

Я вижу пример обработчика SIGCHLD, например: void child() { wait(0); signal(SIGCHLD, child); } void server_main() { ... signal(SIGCHLD, child); ... for(;;;) { ... switch(fork()) { ... } } В обработчике есть две части, которые меня смущают: 1). SIGCH…
07 дек '11 в 23:57
1 ответ

Зомби процесс,SIGCHLD, выход в unix

Каждый ли выход (либо выход, либо выход) из дочернего объекта отправляет SIGCHLD своему родителю? Если это так, то как создается процесс зомби? Как системный вызов wait обычно вызывается в обработчике SIGCHLD.
04 июн '13 в 14:48
2 ответа

execl()- в родительском процессе: SIGCHLD перехватывается ps

Я делаю присваивание для fork(),exec() и связанных вызовов UNIX, где мне нужно показать состояние зомби (дочернего) процесса. Вот соответствующий кусок кода: pid = vfork(); //used vfork() for showing z state if(pid>0) { (some sorting code) execl(…
21 июл '12 в 15:30
2 ответа

Почему мы вообще игнорируем SIGCHLD

Я изучал сигналы и проходил по этой ссылке https://en.wikipedia.org/wiki/Child_process И это то, что он говорит: "Сигнал SIGCHLD отправляется родителю дочернего процесса, когда он завершается, прерывается или возобновляет работу после прерывания. По…
17 сен '15 в 13:37
0 ответов

Обработчик сигналов SIGCHLD

Код не работает, и он зацикливается. Я думаю, что ошибка в методе gestore, который является обработчиком сигналов SIGCHLD. Это первый раз, когда я использую обработчик для захвата сигналов SIGCHLD. Эта программа продолжает извлекать случайно от 0 до…
11 дек '17 в 16:34
1 ответ

Сигнал перехвата CHLD - ZSH работает, а ksh/bash/sh - нет?

Вот пример кода, где сценарий оболочки запускает несколько заданий в фоновом режиме и после получения сигнала CHLD (т. Е. Завершения дочернего процесса) он выполняет некоторые действия... Проблема в том, что если родительский сценарий оболочки ZSH, …
05 мар '12 в 00:28
1 ответ

Перехват SIGCHLD с использованием sigtimedwait() на BSD

У меня проблемы с использованием sigtimedwait() для перехвата сигналов SIGCHLD на FreeBSD. Следующий источник хорошо работает в Debian GNU/Linux 7, но дает мне ресурс, временно недоступный во FreeBSD 9.1: #include <stdio.h> #include <signal…
09 июн '13 в 17:22