xterm:実行できません:ファイルまたはディレクトリがありません
質問
LinuxでCプログラムを書いています。
プロセスを作成し、それをフォークして子を作成しました。この子で別のプログラムを実行したいので、使用しています execlp
. 。ただし、このプログラムは独立したウィンドウで実行する必要があります。
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
これは、現在のファイルと同じディレクトリにある単純なプログラムです。
実行すると、コードは正常に実行され、xterm ウィンドウが表示されますが、エラーが発生します。 "xterm: Can't execvp: No file or directory"
解決策を提案していただけますか?
解決
お使いのシステムには xterm
インストールされている(またはユーザーが間違っている) PATH
)。の存在をテストできます /usr/bin/xterm
(例:の access
syscall)、または他のものを使用してください。たとえば、多くの Debian または Ubuntu ディストリビューションには x-terminal-emulator
(これは通常、何らかの正確なプログラムへのシンボリックリンクです) の代わりに使用できます。 xterm
.
もし xterm
起動すると、プログラムが起動します ./Child1
存在しない場合は、その存在をテストする必要があります( access
) 前に。ソースコードしかない場合 ./Child1.c
事前にコンパイルしておく必要があります (おそらく、 system("gcc -Wall Child1.c -o Child1")
コンパイルが成功したことを事前にテストします。つまり、それをテストする system
0 を返します。 Child1
ファイルは存在し、実行可能です)。
時間をかけて読んでください。 xterm(1) マニュアルページ。