[英]Launch new program using exec in new terminal
我有一个名为pgm1的程序,该程序使用fork创建一个新进程。
然后,在此过程中,我使用以下命令启动新程序( pgm2 ): execv(exec_path_name,argv) 。
但问题是,使用这种方法,我将两个输出都放在同一终端中。 我一直在寻找一段时间,而我发现的唯一解决方案就是这个:
所以我的问题真的很简单,有没有更简单的方法呢?
提前致谢 !
PS:发行版-Ubuntu 11.10 32位
我可以想到两种可能的解决方案:
做正确的事,并将您的输出发送到文件:每个进程可以使用不同的文件,既可以清楚地分开输出,又可以更好地保存记录。 值得一提的是,您也一定会看到性能的提高-即使在当今,终端输出在计算上也非常昂贵...
使用适当的参数执行终端仿真器:大多数终端仿真器提供了一种方法来执行特定程序来代替Shell。 例如xterm
:
$ xterm top
这将在没有外壳的xterm
实例中启动top
。 退出top
也会终止xterm
窗口。
如果您选择的终端仿真器支持此功能,则只需修改传递给execv()
的参数即可使用它。 当然,在这种情况下,你会真正执行终端仿真器,而不是你的程序, 然后将调用自己的过程。
请记住,根据终端仿真器的不同,任何打开的文件描述符都可能无法正确传递给您的程序-终端至少会处理标准文件描述符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.