请问在 linux 下如何使用 execl() 调用另一个多进程的程序?

xiao_potato 2002-06-29 02:55:48
如果该多进程程序能够运行,并且如何得到它的主进程的id?
...全文
1137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyb 2002-06-30
  • 打赏
  • 举报
回复
我的问题由别人提出,我怎么给分??
zhangyb 2002-06-30
  • 打赏
  • 举报
回复
qxp():
非常感谢!
能否解释一下execl("./rec","./rec",NULL)中
两个 ./rec 的含义
ajiefudan 2002-06-30
  • 打赏
  • 举报
回复
在主进程中调用getpid就可以得到主进程的pid
可以在fork之前,这样子进程也可以看到
zhangyb 2002-06-30
  • 打赏
  • 举报
回复
但是我在另外一个程序中这样写
if(fork()==0)
{
execl("./vid",NULL); //vid 是另一个程序
}

就可以。
zhangyb 2002-06-30
  • 打赏
  • 举报
回复
但是我在另外一个程序中这样写
if(fork()==0)
{
execl("./vid",NULL); //vid 是另一个程序
}

就可以。
qxp 2002-06-30
  • 打赏
  • 举报
回复
第一个是路径,第二个是argv[0], 所以,第二个参数必须填,
exec 根据这两个参数来找到并载入、执行程序。

给分嘛,找小土豆呀,呵呵 :P

qxp 2002-06-29
  • 打赏
  • 举报
回复
这个很简单,你要明白:
execl调用并不会产生一个新的pid

所以,大致的代码是这样的

child_pid=fork();

if(pid == 0)
{ //child process
execl("./rec","./rec",NULL); // your statement is wrong
//never go here
perror("execl");
exit(1);
}
// in parent process
// you can kill the process bye call kill(child_pid,SIGKILL)




xiao_potato 2002-06-29
  • 打赏
  • 举报
回复
我的问题是替zhangyb提的。大家帮帮他吧!
zhangyb 2002-06-29
  • 打赏
  • 举报
回复
程序代码如下:
if(fork()) == 0){
execl("./rec", NULL);
id = getpid();
}

rec不能执行

其中rec是我的另一个程序,如果直接运行rec, 可看到四个rec进程存在
zhangyb 2002-06-29
  • 打赏
  • 举报
回复
1。我要调用的程序运行后有多个进程存在,
2。运行后,我还要获得主进程的id,能够将这多个进程杀掉.

我的程序每次运行后,可以看到四个同样的进程存在,只有杀掉第一个才能终止程序。
qxp 2002-06-29
  • 打赏
  • 举报
回复
对不起,我不明白你的意思?

什么是多进程程序啊?主进程又指的是什么?

19,615

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧