进程的一生

随着一句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);//绝望的自杀
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值