linux fork出的子进程从父进程继承些什么不继承什么

linux fork出的子进程从父进程继承些什么不继承什么,第1张

使用fork创建一个新进程后,基于copy-on-write机制,不会立即将父进程的进程分布复制一份给子进程。而对于父进程在fork前所使用的资源,子进程继承了大部分,如父进程打开的文件描述符,还有部分没有继承。

我觉得这个问题你应该从另外一个方向去考虑,既然B不需要A的资源,那么就不要在fork之前打开这些资源。

你如,你原来的代码是

fd = open(...)

...

...

fork()

...

...

你现在就应该改成

fork()

if (parent)

{

......

fd = open()

.....

}

else

{

....

}

如果你是要在A进程打开资源,运行了一些东西,得到了足够的信息才需要调用其他啊程序来做下一步内容,如果按照上面的方法就无法实现了话,你面对的实际是进程间同步和通信的问题。 解决方法也很简单,随便通过一种通信机制(signal,pipe,等等),等A进程获得足够信息后,再通知B进程执行。比如

A:

fork()

/* below code are running in parent, A */

...

...

fd = open()

...

...

NOTIFY(B) /* use kill, send, etc. to notify child task B)

....

B:

WAIT()/* for example, while(1) sleep()*/

execlp(xxx)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8381315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存