我很难理解子进程如何以及何时返回父进程。看看我使用各种网站放在一起的这个例子:
#include <stdio.h>
#include <stdlib.h>
main( int argc, char *argv[] )
{
int i;
int pid;
int wpid;
int status;
time1.tv_sec = 5L;
time1.tv_nsec = 0L;
for ( i = 0; i < 10; i++ )
{
pid = fork();
if ( pid < 0 ) {
printf ( "Error" );
exit ( 1 );
}
else if ( pid == 0 ) {
break;
}
}
while ( ( wpid = wait ( &status ) ) > 0 )
{
printf ( "Exit status of %d was %d (%s)\n", ( int ) wpid, status, ( status == 0 ) ? "accept" : "reject" );
}
return 0;
}
我不明白孩子究竟返回了什么,何时/何地?在fork
命令之后,孩子进入第二个循环,但它永远不会退出该循环以进一步向下并到达返回命令。我应该设置一个条件,所以只有父母执行那个循环吗?孩子会忽略wait()
命令吗?
我发现这是一个问题,对于像我这样的人来说,经验丰富的程序员还不够笨拙。我找不到一个解决这个问题的答案。