fork()的继承内容
来源:互联网 发布:如何编写软件测试报告 编辑:程序博客网 时间:2024/05/16 07:01
子进程完全复制了父进程的内容,除了下面的东西(posix标准):
- PID
- PPID
memory lock (mlock, mlockall)
mlock主要是用来防止部分虚拟地址空间被交换到交换空间。
Process resource utilizations 和 CPU time counters
系统资源使用率是指像CPU使用时间,内存使用大小,IPC消息传递数量,上下文切换次数等,这些当然是独立的。计时器的话指的是用户使用时间、内核使用时间之类的,也是得清0。
pending signals
这里说一下,pending signals指的是像sigterm、sigkill、sigstop…包含这些个信号的列表,这些信号因为进程处于D(uninterruptible sleep)状态,而无法及时被处理,等待的进程被唤醒。
process-associated record locks
比如文件锁flock之类的,这类锁只能关联一个进程,所以子进程当然也没办法继承咯。
timers
定时器是无法被继承的,可能因为跟信号有关?
asynchronous I/O operations (aio_read, aio_write)
此外注意下面的点:
- 当一个线程通过fork()创建一个子进程,整个虚拟地址空间都会被拷贝,包括mutex的状态,条件变量,还有其他的pthread objects。可以使用pthread_atfork()来处理一些mutex之类的问题。
- 当多线程的进程fork之后,子进程应该只调用async-signal-safe函数(man signal-safety),直到它调用execve。
- 子进程继承了父进程的打开的文件描述符的列表。他们指向了相同的文件描述,也就是说两个文件描述符共享打开文件的状态,文件offset,信号驱动I/O属性。
- 总之,不要在多线程的进程中尝试使用fork()。
参考:man fork(2) http://man7.org/linux/man-pages/man2/fork.2.html
阅读全文
0 0
- fork()的继承内容
- fork - 继承还是不继承
- fork 函数继承
- fork后子进程对父进程资源的继承
- linux fork出的子进程从父进程继承些什么不继承什么
- linux下fork出的子进程去掉对主进程的继承
- fork之后进程的数据和文件描述符的继承
- 命名的一些基本规范和fork的一些内容,#pragma once与 #ifndef的区别
- fork exec对子进程继承父进程信号处理机制的影响--APUE
- Linux进程fork execu之数据和文件描述符的继承
- fork()调用中关于缓存区继承而引起的思考
- fork exec对子进程继承父进程信号处理机制的影响--APUE
- fork 和 exec 对子进程继承父进程处理信号处理函数的影响
- fork 子进程不继承父进程打开的文件描述符
- fork exec对子进程继承父进程信号处理机制的影响--APUE
- Linux中fork的使用(03)---使用if...else...区分父子进程特有的内容
- github下fork后如何同步源库的新更新内容?
- fork之后子进程复制父进程的内容究竟是什么?
- 单例学习
- Jquery获取单选点击事件获取radio选中值
- 隶属度函数模板
- 167. Two Sum II
- Android JNI之JAVA调用C/C++层
- fork()的继承内容
- ubuntu 环境 安装 使用 eigen
- error C2601: “...”: 本地函数定义是非法的 && IntelliSense: 不能在成员函数的类外部重定义
- windriver下的WDC_DMAContigBufLock函数和WDC_DMASGBufLock函数的区别
- SSH整合
- 0.OD-基础操作
- PL/SQL 基础知识
- Spring 独立式整合&引入式整合
- Jumpserver v0.4.0 版本安装详细过程