Mauvaise utilisation de la fonction execlp

J’ai essayé d’écrire un programme C dans un environnement Unix qui utilise la fonction execlp . tsort commande tsort (tsort obtient un fichier texte en entrée).

 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 "); } 

l’erreur est la suivante:

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

Qu’ai-je fait de mal?

Citant le manuel sur execlp

[…] La liste des arguments doit être terminée par un pointeur NULL et, comme il s’agit de fonctions variadiques, ce pointeur doit être lancé (char *) NULL .

Vous ne faites pas ça. Essayer:

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