无法用execv()执行程序

时间:2014-11-18 02:00:50

标签: c exec gnuplot execv

我的代码是:

char* arg_list[] = { "gnuplot", "gnuplot_script.sh", NULL };
printf("Ready %s %s\n", arg_list[0], arg_list[1]);
execv( "gnuplot", arg_list );
_exit(EXIT_FAILURE);

输出结果为:

Ready gnuplot gnuplot_script.sh

但没有任何反应(虽然它应该弹出图表)。

我正在复制粘贴输出,没有“就绪”进入终端,在我刚刚执行程序的同一个地方就可以了。所以我不确定这是一个路径问题。

我缺少什么?

1 个答案:

答案 0 :(得分:1)

execv()需要一条路径,例如:

execv("/usr/bin/gnuplot", arg_list);

如果您只想提供文件名,可以使用execvp()

execvp("gnuplot", arg_list);

这两个函数都会在失败时设置errno,因此失败时运行perror()会告诉您发生了什么。