質問

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) マニュアルページ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top