fork编程注意事项
来源:互联网 发布:守护者之杖 淘宝 编辑:程序博客网 时间:2024/06/03 20:12
概念:
对于unix环境中的高级编程而言,完整地了解unix的进程控制是非常重要的。其中必须熟练掌握的只有几个函数:fork、exec族、_exit、wait和waitpid。
总结一下fork编程需要注意的细节:
1.每个进程都有一个非负整形表示唯一进程ID,进程ID可以重用,其中涉及延迟重用算法。
2.fork函数被调用一次,会返回两次,子进程返回值是0,父进程返回值则是子进程的进程ID。
3.子进程获得父进程数据空间、堆和栈的副本,并共享正文段。
4.fork之后是父进程还是子进程先执行是不确定的。
5.fork编程需要考虑标准I/O的缓冲区数据被复制问题。
6.fork之后,父子进程共享文件表,需要考虑文件描述符互相干扰的问题,也就是同步问题,通常的做法是fork之后关闭它们不需使用的文件描述符。
7.fork有两种用法
(1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段
(2)一个进程要执行一个不同的程序。这对shell是常见的情况,在这种情况下,子进程从fork返回后立即调用exec
8.fork编程要处理子进程退出信号,防止僵尸进程出现。
9.fork之后,子进程继承父进程的信号处理方式
10.需要考虑多线程和fork的问题(子进程通过继承整个地址空间的副本, 从而父进程哪里继承了所有互斥量,读写锁和条件状态。如果父进程包含多个线程,子进程在 fork 返回以后,如果紧接着不是马上调用 exec 的话,就需要清理锁状态。)
参考:《unix环境高级编程》
End;
0 0
- fork编程注意事项
- fork()时缓冲区注意事项
- Linux系统编程-fork
- Fork/Join并发编程
- linux环境编程之 fork() || fork()
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- 编程注意事项
- Linux中fork的使用注意事项
- Linux C编程--fork()详解
- linux fork signal 编程实例
- 组合模式--设计模式解析与实战(关爱名 何红辉)笔记
- hdoj 1873 看病要排队(优先队列)
- android studio 获取sha1和md5值
- Android开发涉及到的设计模式
- 第23讲-用if语句实现分支结构-练习
- fork编程注意事项
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
- 关于cocoapods的一些坑
- 自学mysql数据库之函数
- I/O 和 内存映射文件
- HDU 5626 Clarke and points
- 圆形按钮
- Wine
- 也聊聊敬业福吧