Linux 等待系统调用未返回正确的子状态

Linux 等待系统调用未返回正确的子状态,linux,linux-kernel,wait,suse,Linux,Linux Kernel,Wait,Suse,现在写我正在将一些代码从AIX迁移到SUSE Linux。在AiX中,以下代码工作正常: int Wait_for_child() { alarm(10); while (((p_id = wait(&return_code)) > 0) ||(child_signal == 1)) { alarm(0); .......Do Something } return TRUE; } 我们通过从另一个函数传递SIGINT来杀死这个孩子

现在写我正在将一些代码从AIX迁移到SUSE Linux。在AiX中,以下代码工作正常:

int Wait_for_child()
{
    alarm(10);
    while (((p_id = wait(&return_code)) > 0) ||(child_signal == 1)) {
       alarm(0);
     .......Do Something
    }
 return TRUE;
}
我们通过从另一个函数传递SIGINT来杀死这个孩子,并且我们成功地杀死了它

if ((status = kill(proc_info->process_id, SIGINT)) != 0) 
{
    log.printf("fail");      
    return(FAIL)
 } 
但是在LINUX中,等待系统调用不会返回最近终止的子进程id。 请分享你的想法。
感谢

调试想法:
strace-p
父进程,以了解当子进程死亡时它会做什么。。。使用
ps
检查子进程以查看它是否是僵尸等待()的返回值是多少?每次处理
SIGCHLD
时等待都返回-1?是否设置为
SIG\u IGN
?是否有另一个线程调用wait?[ECHILD]调用进程没有子进程不需要的现有资源。请注意,我记得在2001年左右使用AIX时,AIX在这方面有点马虎。然而,这已经是很长一段时间了,记忆模糊。