2017-05-27 32 views
0

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

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. 

我做了什么错?

回答

3

引述the manual on execlp

[...]的参数列表必须由NULL指针终止,并且,因为这些是可变参数的功能,该指针必须转换(字符*)NULL

你没有这样做。试试:

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