vfork
来源:互联网 发布:淘宝直通车协议 编辑:程序博客网 时间:2024/04/26 10:13
vfork
fork
后父进程和子进程通过自己的地址空间和页表看到自己的物理地址上的代码和数据,而vfork
子进程和父进程共享一份地址空间结合页表映射到同物理内存上
如何证明
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
pid_t id = vfork();
if (0 == id){//child
printf("child: pid = %d, ppid = %d\n", getpid(), getppid());
sleep(1);
exit(1);
}else{//father
printf("father: pid = %d, ppid = %d\n", getpid(), getppid());
}
return 0;
}
我们可以看到子进程打印自己的pid和ppid后sleep了一秒,如果是
fork
则先打印父进程,而后才是子进程,但现在如果先打印子进程,子进程exit
后,再打印父进程则得以证明,vfork是子进程在父进程的地址空间里面运行。再来看一个例子
如果在定义一个全局变量g_value
然后在child里面将g_value赋值成100平打印其值和地址,最后在father中也做同样的事,我们看看会发生什么
结果是肯定的,打印的g_value是相同的,这就证明了用vfork使子进程在父进程的地址空间中运行。所以这里的子进程其实是一个线程
。 线程
:比进程的执行粒
度更细,线程是在进程内部运行的分支,一个进程可以有多个线程。在本例中这个子进程就相当于线程。
阅读全文
0 0
- vfork
- vfork
- vfork()
- vfork
- vfork函数
- fork vfork
- fork vfork
- fork,vfork
- fork vfork .
- vfork函数
- fork、vfork
- vfork函数
- vfork Function
- vfork函数
- vfork()函数
- vfork函数
- vfork实现
- LINUX vfork
- 关于推箱子的总结
- USACO-Section1.4 Mother's Milk
- JavaScript —— six
- 实习
- 28335 中断系统
- vfork
- 第2章 在 HTML 中使用 JavaScript 关于页面文档模式
- XML约束
- Web Analytics 杂谈(上)
- Android全局对象Application的使用,以及如何在任何地方得到Application全局对象
- Python学习总结(3)
- 使用webpack打包第三方非模块插件
- Java中可变长参数的使用方法
- 动态生成XML