gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:30 25 4
gpt4 key购买 nike

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

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

但问题是,通过这种方法,我在同一个终端中获得了两个输出。我一直在寻找一段时间,我找到的唯一解决方案是这个:

所以我的问题真的很简单,有没有更简单的方法来做到这一点?

提前致谢!

附言:发行版 - Ubuntu 11.10 32 位

最佳答案

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

  1. Do The Right Thing(TM) 并将您的输出发送到一个文件:每个进程都可以使用不同的文件,从而提供清晰的输出分离和更好的记录保存。作为奖励,您还一定会看到性能提升 - 终端输出的计算成本很高,即使在今天也是如此......

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

    $ xterm top

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

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

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

关于c++ - 在新终端中使用 exec 启动新程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com