xterm :Impossible d'exécuter :Aucun fichier ou répertoire
Question
J'écris un programme C sous Linux.
J'ai créé un processus et je l'ai forgé pour créer un enfant.Je veux exécuter un autre programme chez cet enfant, donc j'utilise execlp
.Mais ce programme doit s’exécuter dans une fenêtre indépendante.
if ( (execlp("xterm","xterm","-e","./Child1", "127.0.0.1", (char *) 0)) < 0) {
printf("Failed to Start the Echo Client. Exiting application.");
return 1;
}
Child1.c
est un programme simple qui se trouve dans le même répertoire que mon fichier actuel.
Lors de l'exécution, le code fonctionne correctement avec la fenêtre xterm qui s'affiche mais j'obtiens une erreur "xterm: Can't execvp: No file or directory"
Pouvez-vous s'il vous plaît me suggérer une résolution?
La solution
Votre système n'a peut-être pas de xterm
installé (ou l'utilisateur a un mauvais PATH
).Vous pourriez tester l'existence de /usr/bin/xterm
(avec par ex.le access
syscall), ou utilisez autre chose.Par exemple, de nombreuses distributions Debian ou Ubuntu ont un x-terminal-emulator
(qui est généralement un lien symbolique vers un programme précis) que vous pouvez utiliser à la place de xterm
.
Si xterm
se déclenche, puis votre programme ./Child1
n'existe pas, vous devez tester son existence (avec access
) avant.Si vous n'avez qu'un code source ./Child1.c
vous auriez dû le compiler avant (peut-être en exécutant un system("gcc -Wall Child1.c -o Child1")
avant et tester qu'il a été compilé avec succès, c'est-à-direteste ça system
renvoie 0 et que le Child1
le fichier existe et est exécutable).
Vous devriez prendre le temps de lire le xterm(1) page de manuel.