请教execl问题

#include <stdio.h>
#include <unistd.h>

int main(void)
{
int flag = 0;
flag = execl("/home/hello",NULL);
printf("%d", flag);
exit(0);
}
请教在这段代码中,hello是一个打印helloworld的可执行文件,为什么execl不能正确执行呢,总是返回-1?

先谢谢了!

execl()的用法错了,查查文档看?

简单一点直接用system。

首先感谢两位的回复!
因为我想在一台机器上 运行一个程序main,它在运行过程中,需要启动另一台机器上的一个可执行程序submain做一个计算,submain计算结束后,把计算结果以异步通信的方式传回给main,如果想实现这么一个过程,请问使用execl或者system能实现吗?因为我发现这两个函数启动的程序实际上都是运行在本地机器上。
有没有更好的办法呢?
先谢谢了!

QNET. :slight_smile:

  1. 使两台机器可以通过QNET互联。(查看 npm-qnet.so 的说明)
    2)用 spawn() 函数,看看如何设inherit里的flag设置。如果不太清楚,也可以下载 on 这个程序的源码,看看 on -f 是怎么实现的。

至于计算结果回传给main,因为是父子进程,你可以选任何常用的手段。 pipe, msgq, QNX message passing都可以。

当然,比较偷懒的方法是使两机QNET互联后,直接system(“on -f othermachine submain arg1 arg2 …”); 但你要传给submain足够的命令行参数来保证它可以回传结果。

:smiley: :smiley:
感激不尽!