进程退出分为:正常退出和异常退出
正常退出:
1.main函数调用return
2.进程调用exit(),标准C库
3.进程调用_exit()或者_Exit()
补充:
1.进程最后一个线程返回
2.最后一个现场调用pthread_exit
异常退出
1.调用abort
2.当进程收到某些信号时,如ctrl+c
3.最后一个线程对取消做出响应
_Exit()
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid;
int cnt=0;//次数
pid=vfork();
if(pid>0)
{
while(1)
{
printf("cnt=%d\n",cnt);
printf("this is father print,father pid=%d\n",getpid());
sleep(1);
}
}
else if(pid==0)
{
while(1)
{
printf("this is child print,child pid=%d\n",getpid());
sleep(1);
cnt++;
if(cnt==3)
{
_Exit(0);
}
}
}
return 0;
}
exit()
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
pid_t pid;
int cnt=0;
pid=vfork();
if(pid>0)
{
while(1)
{
printf("cnt=%d\n",cnt);
printf("this is father print,father pid=%d\n",getpid());
sleep(1);
}
}
else if(pid==0)
{
while(1)
{
printf("this is child print,child pid=%d\n",getpid());
sleep(1);
cnt++;
if(cnt==3)
{
_exit(0);
}
}
}
return 0;
}
——@上官可编程