我的代码是:
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
但什么也没有发生(虽然它应该弹出一个图表)。
我正在将没有“Ready”的输出复制粘贴到终端中,在我刚刚执行我的程序的同一个地方并且它可以工作。所以我不确定这是路径问题。
我错过了什么?
最佳答案
execv()
需要路径,例如:
execv("/usr/bin/gnuplot", arg_list);
如果您只想提供一个文件名,您可以使用 execvp()
:
execvp("gnuplot", arg_list);
这两个函数都会在失败时设置 errno
,因此在失败时运行 perror()
会告诉您发生了什么。
关于无法使用 execv() 执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985337/