我的申请需要fork()
,但有时(约1/10)fork
不会返回孩子。我的代码的分叉部分相当于:
void myFunc()
{
pid_t pid = fork();
if( pid == -1 )
{
printf( "Error! %d\n", errno );
exit(1);
}
else if( pid == 0 )
{
printf( "In the child\n" );
_Exit(0);
}
else
{
printf( "In the parent\n" );
int status;
if( waitpid( pid, &status, 0 ) == pid )
{
// check status
}
printf( "Finished waitpid\n" );
}
}
虽然大部分时间我看到了输出:
In the parent
In the child
Finished waitpid
有时我只看到
In the parent
现在,我怀疑这可能是因为我们在这个平台上的内存有限,所以我在父应用程序中超越了标记,并且fork
没有足够的内存。但是,在这种情况下,我希望调用fork()
返回-1,并且我将处于错误状态。
我是否有可能瞬间耗尽内存,但fork()
没有告诉我这件事?