如何从c+;打开和稍后关闭另一个程序+;在另一个航站楼? 我想从Linux中的C++代码中打开一些其他程序,保存句柄/PID,这样我就可以在以后终止它们。重要的是,我启动的程序在每个应用程序的新终端窗口中打开,并且我可以在启动时向程序传递参数。在windows中,我可以使用CreateProcess和TerminateProcess来完成

如何从c+;打开和稍后关闭另一个程序+;在另一个航站楼? 我想从Linux中的C++代码中打开一些其他程序,保存句柄/PID,这样我就可以在以后终止它们。重要的是,我启动的程序在每个应用程序的新终端窗口中打开,并且我可以在启动时向程序传递参数。在windows中,我可以使用CreateProcess和TerminateProcess来完成,c++,linux,terminal,posix,C++,Linux,Terminal,Posix,在linux中,尝试了popen()和pclose()。目前,我尝试使用posix_spawn()进行此操作。我可以打开另一个程序,然后得到pid,我唯一没有做的就是在另一个终端窗口中打开程序 我目前的代码是: std::string path = "exampleProg"; pid_t pid; status = posix_spawn(&pid, path.c_str(), NULL, NULL, v, NULL); 您可以使用以下选项: system("xterm \"/PAT

在linux中,尝试了popen()和pclose()。目前,我尝试使用posix_spawn()进行此操作。我可以打开另一个程序,然后得到pid,我唯一没有做的就是在另一个终端窗口中打开程序

我目前的代码是:

std::string path = "exampleProg";
pid_t pid;
status = posix_spawn(&pid, path.c_str(), NULL, NULL, v, NULL);
您可以使用以下选项:

system("xterm \"/PATH_TO_EXECUTABLE\"");
您可以使用以下选项:

system("xterm \"/PATH_TO_EXECUTABLE\"");

谢谢你的光临。我有点不知所措。我现在用它来做

popen("xterm -e ...","r")

谢谢你的光临。我有点不知所措。我现在用它来做

popen("xterm -e ...","r")


为什么终端窗口很重要?可能是初始化某个对象的路径?至少你可能会得到更少刺耳的回应。我希望在程序运行时看到它们的输出。如果你想启动终端,那么实际启动终端可能是个好主意。shell命令
xterm vi
将启动一个新的
xterm
进程,并在其中显示
vi
。如何更改此选项以启动您喜爱的终端,并从
c
执行此操作,留给读者作为练习。如果您只想在程序运行时查看程序的输出,则另一种方法可能是将这些命令的输出发送到文件,而不是发送到终端窗口。不要被终端窗口卡住。在Windows上有意义的方法在Linux上可能不太理想。为什么终端窗口很重要?可能是初始化某个对象的路径?至少你可能会得到更少刺耳的回应。我希望在程序运行时看到它们的输出。如果你想启动终端,那么实际启动终端可能是个好主意。shell命令
xterm vi
将启动一个新的
xterm
进程,并在其中显示
vi
。如何更改此选项以启动您喜爱的终端,并从
c
执行此操作,留给读者作为练习。如果您只想在程序运行时查看程序的输出,则另一种方法可能是将这些命令的输出发送到文件,而不是发送到终端窗口。不要被终端窗口卡住。在Windows上有意义的方法在Linux上可能不太理想。
x-terminal-emulator
是特定于某些Linux发行版的,尤其是Debian派生的发行版。我的系统上没有
xterm
,只有
konsole
。事实上,没有可移植的方法可以做到这一点,你必须让用户配置它。最初使用的替代方法(
x-terminal-emulator
)是实现这一点的常用方法,即使这种方法并不普遍。了解如何安装gnome终端或其他终端并不重要。i、 e.sudo apt…感谢遗忘,不幸的是,这样我无法获得稍后关闭应用程序的pid。
x-terminal-emulator
是特定于某些Linux发行版的,尤其是Debian派生的发行版。我的系统上没有
xterm
,只有
konsole
。事实上,没有可移植的方法可以做到这一点,你必须让用户配置它。最初使用的替代方法(
x-terminal-emulator
)是实现这一点的常用方法,即使这种方法并不普遍。了解如何安装gnome终端或其他终端并不重要。i、 e.sudo apt…感谢遗忘,不幸的是,通过这种方式,我无法获取稍后关闭应用程序的pid。