fork()和写时复制
来源:互联网 发布:中国象棋手机版软件 编辑:程序博客网 时间:2024/06/05 07:43
fork()函数用来创建一个新进程,这个新进程被称为原有进程的子进程。fork()产生的自子进程获得父进程的数据空间,堆和栈的副本,此时子进程只拥有副本,并不拥有完整的内存空间,子进程在父进程的地址空间运行。这也就是写时复制。当子进程改变父进程中的数据时,数据就完全复制到子进程中了。
#include <unistd.h> #include <stdio.h> int glob = 1; /* on .data section */ int main(void) { int var = 1; /* on stack */ pid_t pid; printf("before fork\n"); if ((pid = fork()) < 0) { fprintf(stderr, "fork error\n"); return 0; } else if (pid == 0) { glob++; var++; } else { sleep(2); } printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var); return 0; }打印:
pid=16155,glob=2,var=2,var1=0pid=16154,glob=1,var=1,var1=0
由结果可以看出,修改过的变量值都变了,这表明这些变量拥有了新的内存空间。 还有一点就是:父子进程共享正文段。
阅读全文
0 0
- fork()和写时复制
- fork()、写时复制、vfork()
- fork()、写时复制、vfork()
- Linux进程管理——fork()和写时复制
- 关于fork的写时复制!
- 九、Linux系统编程-进程(二)fork系统调用、复制进程映像、写时复制、孤儿进程和僵尸进程
- fork写时拷贝
- 关于linux内核fork后cow(写时复制)的代码分析
- 关于linux内核fork后cow(写时复制)的代码分析
- fork()与写时拷贝~
- 请求调页和写时复制
- fork()之后都会做哪些复制,什么是写时拷贝,父子进程文件偏移量是否一致?????
- 复制sheet和写xls
- 写时复制
- 写时复制
- 写时复制
- 写时复制
- 19 写时复制
- golang基础-goroutine初识、chan存取、goroutine和chan相结合、关闭chan、range取、单元测试
- 插入表格+隔行变色
- Unity3D
- Java动态代理解析
- System类详解-1
- fork()和写时复制
- The type java.lang.Object cannot be resolved.It is indirectly referenced问题
- 20171107_vmware12_ubuntu16.04.3LTS_安装shutter截图软件过程
- 利用let创建块级作用域
- 阿里云PHP-SMS短信服务——验证码发送教程
- Linux下的c如何进行GDB调试
- 用ssm实现qq登录
- 九九乘法表
- 如何学习caffe