繁体   English   中英

在新终端中使用exec启动新程序

[英]Launch new program using exec in new terminal

我有一个名为pgm1的程序,该程序使用fork创建一个新进程。

然后,在此过程中,我使用以下命令启动新程序( pgm2 ): execv(exec_path_name,argv)

但问题是,使用这种方法,我将两个输出都放在同一终端中。 我一直在寻找一段时间,而我发现的唯一解决方案就是这个:

所以我的问题真的很简单,有没有更简单的方法呢?

提前致谢 !

PS:发行版-Ubuntu 11.10 32位

我可以想到两种可能的解决方案:

  1. 做正确的事,并将您的输出发送到文件:每个进程可以使用不同的文件,既可以清楚地分开输出,又可以更好地保存记录。 值得一提的是,您也一定会看到性能的提高-即使在当今,终端输出在计算上也非常昂贵...

  2. 使用适当的参数执行终端仿真器:大多数终端仿真器提供了一种方法来执行特定程序来代替Shell。 例如xterm

     $ xterm top 

    这将在没有外壳的xterm实例中启动top 退出top也会终止xterm窗口。

    如果您选择的终端仿真器支持此功能,则只需修改传递给execv()的参数即可使用它。 当然,在这种情况下,你会真正执行终端仿真器,而不是你的程序, 然后将调用自己的过程。

    请记住,根据终端仿真器的不同,任何打开的文件描述符都可能无法正确传递给您的程序-终端至少会处理标准文件描述符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM