错误使用execlp函数

时间:2017-05-27 13:24:50

标签: c unix

我尝试在使用execlp函数的Unix环境中编写C程序。我正在执行tsort命令(tsort获取一个文本文件作为输入)。

void syserr(char * str)
{
    perror(str);
    exit(1);
}
int main()
{
    int inpfd;
    int pipeC[2];
    char buffer[4];
    execlp("tsort","tsort","t.txt");
    syserr("execlp  ");
}

错误是:

tsort: extra operand 'AWA\211\377AVI\211\366AUI\211\325ATL\215%\350\a '
Try 'tsort --help' for more information.

我做错了什么?

1 个答案:

答案 0 :(得分:3)

引用the manual on execlp

  

[...]参数列表必须由NULL指针终止,并且由于这些是可变参数函数,因此必须将此指针强制转换为(char *)NULL

你不是那样做的。尝试:

execlp("tsort","tsort","t.txt",(char*)NULL);