我的父进程无法捕获SIGCHLD,即使它在waitpid上(SIGCHLD ...为它。 尝试从子进程向父进行显式kill(SIGCHLD ..)以测试父进程没有收到信号。而且味道是AIX ...我们是否需要使用一些标志或某些env设置来编译它?
答案 0 :(得分:1)
您需要注册一个信号处理程序来捕获SIGCHLD。 waitpid
与SIGCHLD相关但不同。使用signal(3)
或sigaction(2)
注册您的信号处理程序。
使用waitpid do:
pid_t x = fork();
...
pid_t y = waitpid(x, &status, options);
SIGCHLD实际上只是告诉您需要调用其中一个等待函数。