无法使用 execv() 执行程序

标签 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

但什么也没有发生(虽然它应该弹出一个图表)。

我正在将没有“Ready”的输出复制粘贴到终端中,在我刚刚执行我的程序的同一个地方并且它可以工作。所以我不确定这是路径问题。

我错过了什么?

最佳答案

execv() 需要路径,例如:

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

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

execvp("gnuplot", arg_list);

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

关于无法使用 execv() 执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985337/

相关文章:

linux - 如何使用 gnuplot 绘制抖动图?

绘制同一文件中两列的差异

我可以假设 C stdlib 函数不使用 errno 吗?

c - 当我试图用 C 读取文件时,为什么 fscanf 会随机更改字符串中的字符?

c - 在递归函数中分配

c - 编写一个程序,将用户输入的数字相乘,直到这些数字的乘积达到 1000

c - fork () 和 execlp () , execlp() 之前的 printf 没有被执行

php - 沟通c程序和php

maven - mvn 在 exec 之前编译

plot - 如何创建具有不同 bin 宽度的直方图