umask( 0 );
return 0;
}
if( (pid = fork()) < 0 )
{
fprintf(stderr, "fork err!\n");
return -1;
}
else if( pid > 0 )
{
fprintf( stderr, "结束进程[%d]\n", getpid() );
//exit( 0 );
return 0;
}
fprintf( stderr, "孤儿进程[%d]\n", getpid() );
signal( SIGHUP, SIG_IGN );
signal( SIGQUIT, SIG_IGN );
signal( SIGCHLD, SIG_IGN );
setsid();
umask( 0 );
return 0;
}
30行如果为exit( 0 ),运行结果:
孤儿进程[9777]
main进程[9777]
结束进程[9776]
如果将30行的exit( 0 )替换为return 0,运行结果:
孤儿进程[9777]
main进程[9777]
结束进程[9776]
main进程[9776]
这就体现了return和exit的区别之一,return是逐层退出,而exit是立即结束进程。
原文:http://blog.csdn.net/ssz912728941/article/details/34106931