我试图在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);