【问题标题】:execl() returns `cannot open or parse argument` errorexecl() 返回“无法打开或解析参数”错误
【发布时间】:2012-09-17 08:20:37
【问题描述】:

我有这段代码可以使用 execl() 运行程序,但我收到了这个错误:

Cannot open or parse ' arg 3'. 

而且,当我删除参数 3 时,我得到参数 2 的相同错误,知道吗?

我在调试,显然第一次是_pid大于0,为什么会这样?

int down[2], up[2];

pipe(down);   // creates pipe - [0] is for reading, [1] for writing
pipe(up);

pid_t _pid = fork();

if (_pid < 0)
    exit(1);


if (_pid == 0)
{
    close(down[1]);
    close(up[0]);

    dup2(down[0], 0);
    dup2(up[1], 1);

    execl(cmd_line, cmd_line, "arg 1", "arg 2", "arg 3", NULL);

    _exit(1);
}


// the rest of this fn is executed by the parent only

close(down[0]);
close(up[1]);
_down = down[1];
_up = up[0];

_reader_thd = new Thread(reader_wrapper, this);

【问题讨论】:

    标签: c++ os.execl


    【解决方案1】:

    听起来更像是您正在执行的任何内容都无法打开或解析您的参数。

    【讨论】:

    • 为什么会这样?,当我直接执行时,它工作正常。我正在尝试使用参数运行 gnugo 程序 --color black --boardsize 9 .... 有什么想法吗?
    • 你的代码基本上是execl("/path/to/gnugo","/path/to/gnugo","--color","black","--boardsize","9",NULL);?如果是这样,那就不知道了。否则告诉我它是什么样子的。我现在开始怀疑你做了"--color black","--boardsize 9",NULL,可能是这样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    相关资源
    最近更新 更多