Linux中fork的使用注意事项

  Linux中fork函数用于在一个进程中创建一个新的子进程,先看看其定义:

    #include<unistd.h>  

    #include<sys/types.h>

 函数定义:   pid_t    fork( void);

    pid_t 是一个宏定义,其实质是int, 被定义在#include<sys/types.h>中,虽然fork是被调用了一次,但是这个函数却会返回两次,

在子进程中,这个函数会返回0,在父进程中这个函数返回的是子进程的进程id(大于0),子进程是对父进程的复制(duplicate)

而不是共享空间。

当一个父进程fork了一个子进程的时候是需要等待这个子进程结束后将这个子进程的资源回收的,但是一般情况下如果parent进程

并没有等待子进程结束,自己先提前结束的话,init进程会将child进程接管,并且将其资源回收,使用的函数是waitpid

在子进程结束的时候内核会向父进程发送SIGCHLD信号,如果父进程将这个信号屏蔽掉,然后父进程并没有等待子进程结束那么

子进程就会变为僵尸进程.(Z)


【参考资料】

1:http://baike.baidu.com/view/1952900.htm

2:man手册

3:http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part2/

4:http://hi.baidu.com/q%C4%AB%B9%E6%B3%D8q/blog/item/feef2e23a6c15deed6cae2c8.html

5:http://wenku.baidu.com/view/fdf2be956bec0975f465e2b4.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值