首页技术exit0(Linux程序设计:了解exit0的作用与用法)

exit0(Linux程序设计:了解exit0的作用与用法)

编程之家2024-01-31111次浏览

一、Linux中的进程问题,以及exit(0); 和sleep(5);

俺跟你解释一下:

fork是copy一个跟当前进程一模一样的进程,包括当前进程的所有状态(有特殊设置就不会拷贝,如文件标识)。子进程如果不设置新的执行程序,会继续执行fork之后的代码,注意前面提过的copy跟父进程一模一样的代码。

pid==0代表是子进程,因此子进程会执行这段代码:

if(pid==0)

{

printf("child!!!\n");

//这里会造成子进程的主线程,main执行线程,阻塞5秒

sleep(5);

exit(0);

}

pid> 0代表是父进程,因此父进程继续执行的代码为:

if(pid>0)

{

//此处必须等待子进程结束,子进程调用exit(0),时会通知父进程继续执行

//属于进程间通讯、同步的一个手段之一。那子进程等待5秒被唤醒,执行exit(0)

//父进程收到通知,获取到子进程的退出状态,继续就会printf,基本也就是等待了5秒

//然后父进程return0等价于exit(0)正常结束

wait(NULL);//不这样写,父进程直接结束可能会产生僵尸进程,也可能变成孤儿进程由

//由init进程领养,并正确结束。通用的做法必须wait。根据操作系统以及版本不同处理

//方式可能不一样,如aix可能就会有僵尸进程产生

printf("father!!!\n");

}

二、linux里main()里使用fork()函数,exit(0)为什么不是退出main

fork()产生一个新的进程,此时和父进程一起就有了两个进程实例,通过pid区分,不完全准确的比喻就是有了两个程序分支。但是父进程、子进程的代码都包含了全部的,父进程或子进程完成它的工作后要用退出了,不然剩下的代码还是会执行下去的。exit(0)是结束进程

getasynckeystate(关于GetAsyncKeyState)godaddy备案域名(如何在阿里云备案Godaddy域名?)