2010-09-17 117 views
0

即使它的waitpid(SIGCHLD ...对于它,我的父进程无法捕获SIGCHLD 尝试给父进程显式kill(SIGCHLD ..)从孩子来测试父母没有收到信号。同样的味道是AIX ...我们需要编译它与一些标志或一些环境设置?AIX,父进程在子进程时无法捕获SIGCHLD

回答

1

您需要注册一个信号处理程序来捕获SIGCHLD。 。waitpid从SIGCHLD相关但不同的使用无论是signal(3)sigaction(2)注册信号处理程序

要使用waitpid函数做:

pid_t x = fork(); 
... 
pid_t y = waitpid(x, &status, options); 

SIGCHLD真的只是告诉你,你需要调用其中一个等待函数。

+0

信号处理函数可能会有一个空函数:SIGCHLD可能不会被忽略或阻塞。这对于AIX来说并不是独一无二的,这是包括Linux在内的几乎所有* nix系统上的默认行为。 – Dummy00001 2010-09-17 20:19:10