我正在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"
你能告诉我一个决议吗?
答案 0 :(得分: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")
并测试它已成功编译,即测试system
返回0并且Child1
文件存在且可执行。)
您应该花时间阅读xterm(1)手册页。