gpt4 book ai didi

linux - Linux 中的作业控制 - 想要将控制权交还给终端

转载 作者:太空狗 更新时间:2023-10-29 11:20:14 24 4
gpt4 key购买 nike

我需要一些关于 linux 作业控制的帮助。

我从终端运行我的程序,像这样

$ ./test.elf &

然后我的程序/进程作为后台进程运行。

一段时间后(比如 5 秒),我输入 fg 将我的进程置于前台。

一段时间后(比如 5 秒),我希望我的程序回到后台进程并将 bash 程序置于前台进程,以便我可以继续使用终端。

这是我的做法:

  1. 当启动我的 pprogram 时,我使用 tcgetpgrp 函数获取前台进程(bash 程序)的组进程 ID。
  2. 然后我等到我的进程成为前台进程。我使用 tcgetpgrp(STDIN__FILENO)
  3. 然后我等待 ~5 秒
  4. 使用 tcsetpgrp 我将在上面第 1 点中获得的进程放在前台。

问题是,我可以看到我的进程放在后台,bash 程序放在前台,但我无法在终端中输入命令。 bash 不会“返回”,它仍在等待或休眠。

我知道我可以按 Ctrl-z 然后按 bg 但我不想使用它,因为在 Ctrl 之后-z 被按下我的进程停止了,这不好,因为我正在运行“实时”控制应用程序。所以我想在不停止或暂停我的程序的情况下“立即”切换回终端。

如果我对问题的描述令人困惑,我深表歉意。

有什么意见吗?

最佳答案

我必须承认,如果这是您正在寻找的解决方案,我不是 100% 确定,但是使用 GNU Screen 实用程序怎么样?您的应用程序可以在一个屏幕上运行,而您在另一个屏幕上有一个可用的终端。屏幕之间的切换就像一个键盘快捷键一样简单。可以找到 GNU 屏幕的文档 here .

另一个选项可能是 disown 命令(据我所知,仅在 Bash 中可用)。它可以让您在后台运行一个进程,并找到一些文档 here .

关于linux - Linux 中的作业控制 - 想要将控制权交还给终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9427670/

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