【发布时间】:2018-09-09 08:08:52
【问题描述】:
我想从另一个 C 程序执行一个 C 程序。 实际上,当控件返回调用程序时,我需要使用system() 函数来实现我的功能。由于我无法使用system() 获得结果,我尝试使用execv() 也没有成功。
下面是我尝试的示例代码
int main(void) {
puts("executing this prog from another prog");
return EXIT_SUCCESS;
}
上面那个叫test1.c
int main(void) {
execv("./test1",NULL); //system("./test1");
puts("!!!Hello World!!!");
return EXIT_SUCCESS;
}
这是 test2.c
使用system(),我收到sh: 1: ./test1: not found 错误,使用execv() 它只是忽略声明并打印!!!Hello World!!!
注意:主要是想知道system()对于我要解决的问题的作用。
【问题讨论】:
-
你从
system得到的错误应该是一个很好的提示。 -
你把
test1.c编译成test1了吗? -
test1是否在您当前的工作目录中可执行? -
system()不是系统调用,我删除了那个标签。 -
NULL不是execv()的有效第二个参数。它需要一个有效的argv数组。