我尝试在使用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.
我做错了什么?
答案 0 :(得分:3)
[...]参数列表必须由NULL指针终止,并且由于这些是可变参数函数,因此必须将此指针强制转换为(char *)NULL 。
你不是那样做的。尝试:
execlp("tsort","tsort","t.txt",(char*)NULL);