C++ execl()返回“无法打开或分析参数”错误

C++ execl()返回“无法打开或分析参数”错误,c++,os.execl,C++,Os.execl,我使用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)

我使用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);
int向下[2],向上[2];
管道(向下);//创建管道-[0]用于读取,[1]用于写入
管道(向上);
pid_t_pid=fork();
如果(_-pid<0)
出口(1);
如果(_pid==0)
{
关闭(关闭[1]);
关闭(向上[0]);
dup2(向下[0],0);
dup2(up[1],1);
execl(命令行,命令行,“arg 1”,“arg 2”,“arg 3”,NULL);
_出口(1);
}
//此fn的其余部分仅由父级执行
关闭(关闭[0]);
关闭(向上[1]);
_向下=向下[1];
_向上=向上[0];
_reader\u thd=新线程(reader\u wrapper,this);

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

为什么可能会这样呢?当我直接执行时,它工作正常。我正在尝试用参数运行gnugo程序——黑色——boardsize 9。。。。你知道吗?你的代码基本上是execl(“/path/to/gnugo”、“/path/to/gnugo”、“--color”、“black”、“--boardsize”、“9”、NULL)?如果是,那就不知道了。否则告诉我它是什么样子。我现在开始怀疑你做了,
“--color black”、“--boardsize 9”、NULL
,这可能是吗?