xterm:Kann nicht ausführen:Keine Datei oder Verzeichnis
Frage
Ich schreibe ein C-Programm unter Linux.
Ich habe einen Prozess erstellt und ihn gegabelt, um ein Kind zu erstellen.Ich möchte ein anderes Programm in diesem Kind ausführen, also benutze ich execlp
.Dieses Programm muss jedoch in einem unabhängigen Fenster ausgeführt werden.
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
ist ein einfaches Programm, das sich im selben Verzeichnis wie meine aktuelle Datei befindet.
Bei der Ausführung läuft der Code einwandfrei, wenn das xterm-Fenster angezeigt wird, aber ich erhalte eine Fehlermeldung "xterm: Can't execvp: No file or directory"
Können Sie mir bitte eine Lösung vorschlagen?
Lösung
Ihr System hat möglicherweise keine xterm
installiert (oder der Benutzer hat eine falsche PATH
).Sie könnten die Existenz von testen /usr/bin/xterm
(mit z.B.der access
syscall) oder etwas anderes verwenden.Zum Beispiel haben viele Debian- oder Ubuntu-Distributionen eine x-terminal-emulator
(was normalerweise ein Symlink zu einem bestimmten Programm ist), den Sie anstelle von verwenden könnten xterm
.
Wenn xterm
startet, dann dein Programm ./Child1
existiert nicht, sollten Sie seine Existenz testen (mit access
) vor.Wenn Sie nur einen Quellcode haben ./Child1.c
sie sollten es vorher kompiliert haben (vielleicht durch Ausführen eines system("gcc -Wall Child1.c -o Child1")
vorher und testen, dass es erfolgreich kompiliert wurde, d. h.testen Sie das system
gibt 0 zurück und dass die Child1
datei existiert und ausführbar ist).
Sie sollten sich Zeit nehmen, die zu lesen xterm(1) Handbuchseite.