导航:首页 > 文件类型 > linuxfork文件

linuxfork文件

发布时间:2023-03-12 11:31:18

linux fork 会共享哪些东西

fork()不仅创建出与父进程代码相同的子进程,而且父进程在fork执行点的所有上下文场景也被自动复制到子进程中,包括:
—全局和局部变量
—打开的文件句柄
—共享内存、消息等同步对象
由于pipe调用相当于创建了2个文件句柄,因此在fork后这两个句柄也被自动复制到子进程中,对这两个句柄的操作效果与在主进程中的操作效果是一致的,这就使父子进程之间很容易通过该机制实现数据交换,如:
假设pipe产生的句柄为P[0],P[1],在fork后父子进程都拥有了P[0],P[1]句柄,那么:
—父进程可向自己的P[1]中写入数据,子进程从P[0]中即可读出该数据;切记此时父进程不能也从P[0]读数据,否则自己写入的数据可能先被自己读走了
—反之亦然,子进程向P[1]中写入数据后,父进程从P[0]中可读出该数据;切记此时子进程不要从P[0]读走数据
你可能难以理解为什么进程内部的数据读写会被传递到另一个进程,但别忘了,pipe匿名管道和文件,socket等一样是属于操作系统的管理对象,对其进行读写都是由OS的内核代码来进行控制的。在父进程调用pipe创建出管道后,该管道对象是存储在OS内部的,父进程得到的P[0]和P[1]都只是对该对象的引用(相当于指针);在fork出子进程后,子进程复制出的也只是同一个指针,所指向的还是OS中的同一个对象,这就是为什么父子进程能通过其进行互相通信的原因。

❷ 纯小白,请Linux怎么调用fork()创建两个子进程并运行

是的,需要在cpp里面调用fork,然后再执行exec。
下面是个例子:

pid_t pid = fork();
if (pid < 0) {
return;
}
else if (pid == 0) {
printf("child process!回!!!\n");
char *argv[] = { (char *)"tst_app", (char *)"xx", NULL };
execv("/usr/bin/tst_app", argv);
}
请采答纳,谢谢

❸ LINUX中fork.c文件作用

楼上的(回答者: 497820833 - 助理 二级 2009-7-10 17:20),

你添加了一个else,只是在fork发生异常时不需要再做后面两个分回支的判断答了,可以说意义不大,因为没有else一样能够实现同样的效果。

阅读全文

与linuxfork文件相关的资料

热点内容
经典网络营销有哪些 浏览:465
官方免费下载往返app 浏览:705
在哪里app可以免费看英超 浏览:12
线切割hi系统单线怎么编程 浏览:867
ps中文件格式不属于矢量图的是 浏览:148
U盘缓存文件夹 浏览:941
视频响应式js 浏览:191
编程模型怎么看图 浏览:177
相机7500打A档数据调多少 浏览:182
单引号双引号js 浏览:924
该文件包含违规内容是什么意思 浏览:926
maya脸部捕捉教程 浏览:762
联通app如何看宽带网速 浏览:605
maccs6打不开raw文件格式 浏览:730
UG90升级包360云盘 浏览:831
dnf念帝90版本宠物推荐 浏览:777
引用css文件到html网页里方法 浏览:217
天之眼导航地图怎么升级 浏览:934
word文件修改后怎么重新生成目录 浏览:973
win2008iis上传文件大小 浏览:948

友情链接