【问题标题】:Can't get program executed with execv()无法使用 execv() 执行程序
【发布时间】:2014-11-18 02:00:49
【问题描述】:

我的代码是:

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

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

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

我错过了什么?

【问题讨论】:

    标签: c exec gnuplot execv


    【解决方案1】:

    execv() 需要路径,例如:

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

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

    execvp("gnuplot", arg_list);
    

    两个函数都在失败时设置errno,所以在失败时运行perror()会告诉你发生了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2022-10-03
      • 2016-06-28
      • 1970-01-01
      相关资源
      最近更新 更多