使用linux编写C语言程序,如何才能得到进程信息和父进程信息?
1个回答
展开全部
我觉得这个问题你应该从另外一个方向去考虑,既然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);
你如,你原来的代码是
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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询