进程的一生

来源:互联网 发布:宏晶单片机官网 编辑:程序博客网 时间:2024/05/06 17:30
随着一句fork,一个新进程呱呱落地,但它这时只是老进程的一个克隆。    然后随着exec,新进程脱胎换骨,离家独立,开始了为人民服务的职业生涯。    人有生老病死,进程也一样,它可以是自然死亡,即运行到main函数的最后一个"}",从容地离我们而去;也可以是自杀,自杀有2种方 式,一种是调用exit函数,一种是在main函数内使用return,无论哪一种方式,它都可以留下遗书,放在返回值里保留下来;它还甚至能可被谋杀, 被其它进程通过另外一些方式结束他的生命。    进程死掉以后,会留下一具僵尸,wait和waitpid充当了殓尸工,把僵尸推去火化,使其最终归于无形。    这就是进程完整的一生。
 
#include "wailer.h"

int main()
{
pid_t pid;
int status;

if((pid = fork()) < 0) //老爹进程生儿子进程
perror("fork error");
else if (pid == 0) {
if (( pid = fork()) < 0) //儿子进程生孙子进程
perror("fork error!");
else if (pid > 0) //儿子进程自杀
exit(0);
sleep(2);
printf("second child, parent pid = %d\n", getppid());
exit(0);
}

if(waitpid(pid, NULL, 0) != pid) //老爹进程, 等儿子呢
perror("waitpid error");
exit(0);//绝望的自杀
}
原创粉丝点击