fork的总结

1、文件共享

fork时,创建的文件描述符,父子进程共享。在父子进程都对文件操作时,如果没有作同步处理,会出现相互干扰问题。现在说下fork后处理文件描述符的常用情况
(1)父进程等待子进程完成。在这种情况下,父进程无需对其描述符亻任何处理,当子进程终止后,它曾进行的读写操作的任一共享描述符的偏移量已进行了相应更新。

(2)父、子进程各自执行不同的程序段。在这种情况下,fork后,父、子进程各自关闭不需要使用的文件描述符,这样就不会干扰对方使用的文件描述符。这种方法是网络服务进程中经常使用的。

2、父、子进程的相同与区别

除了打开文件之处,父进程的很多其它属性也由子进程继承,继承的有

相同:
(1)实际用户ID、实际组ID、有效用户ID、有效组ID

(2)附加组ID

(3)进程组ID

(4)会话ID

(5)控制终端

(6)设置用户ID标志和设置组ID标志

(7)当前工作目录

(8)根目录

(9)文件模式创建屏蔽字

(10)信号屏蔽和安排

(11)针对任一打开文件描述符的在执行时关闭(close-on-exec)标志

(12)环境

(13)连接的共享存储段

(14)存储映射

(15)资源限制

区别:

(1)fork的返回值

(2)进程ID不同

(3)父进程ID不同

(4)子进程的tms_utime、tms_stime、tms_cutime及tms_ustime均被设置为0

(5)父进程设置的文件锁不会被子进程继承

(6)子进程的未处理的闹钟(alarm)被清除

(7)子进程的未处理信号集设置为空集

3、fork失败的的原因

系统中已经有太多的进程

该实际用户ID的进程总数超过了系统限制

4、fork的两种用法

(1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段。这在网络服务进程中是常见的-父进程等待客户端的服务请求。当这种请求到达后,父进程调用fork,使子进程处理此请求,父进程继续等待下一个服务请求到达。

(2)一个进程要执行一个不同的程序。这对shell是常见的情况,在这种情况下,子进程从fork返回后立即调用exec

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值