关于fork的不解之处
来源:互联网 发布:fw190d13数据 编辑:程序博客网 时间:2024/05/17 01:16
看到一段代码如下:
#include <stdio.h>#include <sys/types.h>#include <unistd.h>struct con { int a; }; int main() { pid_t pid; struct con s; s.a = 2; struct con* sp = &s; pid = fork(); if (pid > 0) { printf("parent show %p, %p, a = %d\n", sp, &sp->a, sp->a); sp->a = 1; sleep(10); printf("parent show %p, %p, a = %d\n", sp, &sp->a, sp->a); printf("parent exit\n"); } else { printf("child show %p, %p, a = %d\n", sp, &sp->a, sp->a); sp->a = -1; printf("child change a to %d\n", sp->a); } return 0; }
执行结果为:
parent show 0x7fff47720cc0, 0x7fff47720cc0, a = 2
child show 0x7fff47720cc0, 0x7fff47720cc0, a = 2
child change a to -1
parent show 0x7fff47720cc0, 0x7fff47720cc0, a = 1
parent exit
为什么不同进程变量的虚拟地址相同?应该不同的,因为它们的值改变互不影响。
不解啊
新解释:不同地址有各自独立的虚拟内存,进程间不能互相访问对方的虚拟地址。fork后的子进程与父进程有同样的页表信息。取地址只能取到虚拟地址,不能取到物理地址。
0 0
- 关于fork的不解之处
- 关于硬盘的N个不解之处我想求大师解答~!(不识别、分区、重装系统)
- Jquery关于table的不解
- python 关于循环的不解
- Java十六进制字面值的不解之处
- {{JS}}关于this一个不解的地方
- 关于CEGUI的几点不解
- 不解的
- 一个DLL例子中的不解之处
- "关于图像分割Snake算法(c#)的一些不解之惑,望大神指点"的拙见
- 关于正则里面的几个不解的情况!
- 一个奇怪的关于自冲销的问题,不解?
- 求助关于位图的读写,不解的地方
- 1. 关于一个宏出出不解的小问题
- 关于fork的理解
- 关于fork的理解
- Oracle PL/SQL之令人不解的提示(nls_date_format)
- Android 中内存泄露之我的不解(1)
- 《Java程序设计》第一次作业:简单的JAVA源代码之计算器
- C++变量类型的那些事
- Nginx 实时生成缩略图
- linux下进程的最大线程数、进程最大数、进程打开的文件数
- 23种设计模式(Observer模式)
- 关于fork的不解之处
- 第24课时,自测
- warning: skipping copy phase strip, binary is code signed: .....
- iOS之UITextView和UITextFiled的区别
- Leetcode_53_MaximumSubarray
- Max Factor hdu2710
- 后台List<String> list 传到前台 select输出 问题
- Python--简单的用户管理系统
- Java_socket程序学习0501-彩票销售-第一阶段server端整理-成功