【问题标题】:Linux:how to 'fork' not exec a new process in a new terminal window?Linux:如何在新的终端窗口中“分叉”而不是执行新进程?
【发布时间】:2012-06-14 19:49:14
【问题描述】:

我正在使用带有 posix 的 fedora 15,并且我想在一个新的终端窗口中分叉我的子进程,在该窗口中我只能与子进程交互,而父进程仍保留在原始终端中。我不想执行,因为这需要我重新安排我的所有代码,这些代码目前似乎不可行,因为我必须在后天展示我的项目。这可能吗?如何? 我试过 forkpty 但它给了我一个编译错误。

【问题讨论】:

  • 对于 gnome-terminal 尝试“gnome-terminal -x command”或对于 xterm 尝试“xterm -T command”,其中 command 是您要执行的命令。我是一个 ubuntu 人,所以不确定这如何转化为 fedora
  • 您仍然需要将新进程的文件描述符重新分配给新终端的 pty。 this 和 exec 经常一起使用。我不明白为什么重新安排代码会出现问题。

标签: linux process fork


【解决方案1】:

看看man screen。我认为它可能是您正在寻找的东西..

例如,您可以运行:

screen -dmS SESSION_NAME bash -c "COMMAND"

其中 SESSION_NAME name 是会话的名称,COMMAND 是您要执行的命令。这样,它将作为守护进程启动,与您当前的 shell 分离。您没有义务这样做,但似乎更适合您的问题的解决方案。如果你想在前台删除-dmS SESSION_NAME

然后,您可以通过以下方式与孩子互动:

screen -r SESSION_NAME

您可以使用以下命令返回主 shell:

screen -d

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2023-04-04
    • 2010-09-24
    • 2020-06-18
    相关资源
    最近更新 更多