Например, в родительском процессе я развил дочерний процесс и жду дочерний процесс:
int main() {
setSignal(SIGCHLD, sigchld_handler)
while(1) {
// fork some child processes
myForkFunction()
waitpid(-1, &status, 0)
}
}
Более того, у меня есть обработчик сигнала SIGCHLD:
void
sigchld_handler(int sig) {
while ((pid = waitpid(-1, &status, WNOHANG)) > 0) {
// Reap zombie processes
}
}
Как видно, waitpid()
появляется как в функции main()
, так и в функции sigchld_handler()
. Мне было интересно, может ли waitpid
быть прервано SIGCHLD
. Если это может быть прервано SIGCHLD
, что тогда произойдет?
У кого-нибудь есть идеи по этому поводу?
waitpid()
, или в паре других мест в той же книге, которую я просматривал. Это далеко не окончательное «это не покрыто», но показательно, что, вероятно, это не так. 04.07.2016