我试图在Unix环境中编写使用execlp函数的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.

我做错了什么?

最佳答案

引用the manual on execlp
[…]参数列表必须由一个空指针终止,并且,由于这些是变量函数,因此该指针必须为强制转换(char*)空。
你不会那么做的。尝试:

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

09-06 19:45