当前位置: 技术问答>linux和unix
为什么每次都exit()???
来源: 互联网 发布时间:2016-10-24
本文导语: # include # include # include void waiting(); void stop(); int main(void) { int p1, p2; signal(SIGINT,stop); while((p1=fork())= =-1); if(p1>0) /* In Parent Process*/ { /*(1) */ ...
# include
# include
# include
void waiting();
void stop();
int main(void)
{
int p1, p2;
signal(SIGINT,stop);
while((p1=fork())= =-1);
if(p1>0) /* In Parent Process*/
{ /*(1) */
while((p2=fork())= =-1);
if(p2>0) /*in parent process*/
{ /* (2) */
wait_mark=1;
waiting(0);
kill(p1,10);
kill(p2,12);
wait( );
wait( );
printf(“parent process is killed!n”);
exit(0);vi
} else{ /*In Child Process 2*/
wait_mark=1;
signal(12,stop);
waiting();
lockf(1,1,0);
printf(“child process 2 is killed by parent!n”);
lockf(1,0,0);
exit(0);
}
}else{ /*In Child Process 1*/
wait_mark=1;
signal(10,stop);
waiting();
lockf(1,1,0);
printf(“child process 1 is killed by parent!n”);
lockf(1,0,0);
exit(0);
}
return 0;
}
代码中多次exit(0);为什么每次都要exit(0);?是因为每次要把权限交回给OS,OS进行KILL的操作么?
|
exit函数中的实参是返回给操作系统,表示程序是成功运行结束还是失败运行结束。对于程序本身的使用没有什么太实际的差别。习惯上,一般使用正常结束程序exit(0)。
exit(0) 正常结束程序运行
exit(非0) 非正常结束程序运行
如果是给调用者的返回值用return
exit(0) 正常结束程序运行
exit(非0) 非正常结束程序运行
如果是给调用者的返回值用return
|
exit()调用是退出进程,代码中有两个进程,要分别退出,当然你不exit也可以,程序退出的时候会自动加上exit();
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。