满意答案
wangbin85
.08.28
采纳率:48%等级:13
已帮助:3209人
我觉得这个问题你应该从另外一个方向去考虑,既然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);
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vae la
00分享举报