#c #posix #inter-process-communicat
#c #posix #межпроцессный-коммуникат
Вопрос:
итак, я пишу оболочку, которая может иметь как передний план, так и фоновый процесс. У меня есть:
signal(SIGCHLD, childHandler);
и, таким образом, у меня есть обработчик:
void childHandler(int signum){
int status, PID;
PID = waitpid(-1, amp;signum,WNOHANG);
}
этот обработчик фиксирует как дочерние элементы переднего плана, так и фоновые дочерние элементы, которые изменяют состояние.
Моя оболочка, похоже, работает для процессов переднего плана.
Однако, как только я вызываю фоновый процесс, все перестает работать должным образом … и я думаю, что это может быть связано с этим обработчиком.
Кто-нибудь может увидеть, если что-то не так / отсутствует?
Комментарии:
1. Хотя формально это не так, мне интересно, почему вы используете ‘signum’ в качестве второго аргумента для ‘waitpid ()’ и не используете ‘status’?
2. Я не вижу ничего плохого в вашем обработчике (кроме того, что сказал алк). Как вы отправляете процессы в фоновый режим?