0

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"

解決策を教えてください。

4

1 に答える 1

0

システムに がxtermインストールされていない (またはユーザーが間違った を持っているPATH) 可能性があります。/usr/bin/xterm( accesssyscall などを使用して)の存在をテストするか、別のものを使用することができます。たとえば、多くの Debian または Ubuntu ディストリビューションにはx-terminal-emulator(通常、正確なプログラムへのシンボリック リンク) があり、xterm.

xtermが起動した場合、プログラム./Child1は存在しません。事前にその存在を (でaccess) テストする必要があります。ソース コードしかない場合は、./Child1.c事前にコンパイルしておく必要があります (おそらく、事前に実行して、system("gcc -Wall Child1.c -o Child1")正常にコンパイルされたことをテストします。つまり、system0 を返し、Child1ファイルが存在し、実行可能であることをテストします)。

xterm(1)の man ページを読む時間を取る必要があります。

于 2012-10-03T05:25:05.410 に答える