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