c - Ncurses 在后台停止进程

标签 c linux background-process jobs ncurses

问题:

Ncurses 屏幕初始化导致发送到后台的进程停止,只有在返回前台时才恢复。

问题:

  • 是否可以让使用 ncurses 进行显示的进程仍在后台运行?
  • 有没有一种方法可以让进程自检它是否在后台运行并在前台调用初始化 ncurses 并在发送回后台时结束它(并可能在必要时重复此操作)?

注意事项:

  • 我只希望在进程在前台运行时更新显示
  • 当进程在后台时,不需要显示更新。

感谢任何帮助。


状态更新

2013/07/17

  • 查看 ncurses 文档是因为 initscr() 在发送到后台时导致程序中断。

  • 研究进程状态检测。

最佳答案

我认为罪魁祸首可能是(来自 signal(7))

   SIGTTIN   21,21,26    Stop    tty input for background process
   SIGTTOU   22,22,27    Stop    tty output for background process

我不知道在使用 ncurses 时是否可以覆盖这些信号的信号处理。不过,这似乎没有多大意义:您既不想从前台进程窃取输入,也不想以不受控制的方式在 tty 上乱写(破坏前台进程写入的任何内容)。所以我认为,您观察到的行为可能是唯一明智的...

但是:如果你想在后台运行一些 ncurses 程序,你可以使用屏幕 http://www.gnu.org/software/screen/几乎在任何 Linux 发行版中都有。在分离屏幕中运行您的进程,然后使用“screen -r -D”或类似方式重新连接。

关于c - Ncurses 在后台停止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663607/

相关文章:

linux - Linux 中的 fget_light 有什么作用?

php - 如何同时运行两个php文件?一个在背景中,另一个在前景中

windows-phone-8 - Windows Phone 8 - 保持后台位置跟踪超过四个小时

ios - 在后台长时间运行应用程序

c - C中const的外部链接

c - 如何将 char* 转换为 char[]

ios - `UnsafeMutablePointer.initialize()`到底是做什么的?

c - 从套接字读取在最后一个字节停止

linux - 如何创建递归嵌套的 zip 文件

c - 扫描调用进程的内存