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(例如access系统调用)的存在,或使用其他东西。例如,许多 Debian 或 Ubuntu 发行版都有一个x-terminal-emulator(通常是指向某些精确程序的符号链接),您可以使用它来代替xterm.

如果xterm启动,那么你的程序./Child1不存在,你应该access在之前测试它的存在(用 )。如果你只有一个源代码./Child1.c,你应该在之前编译过它(也许通过运行一个system("gcc -Wall Child1.c -o Child1")before 并测试它是否已成功编译,即system返回 0 并且Child1文件存在且可执行的测试)。

您应该花时间阅读xterm(1)手册页。

于 2012-10-03T05:25:05.410 回答