c - Ncurses在放入后台时停止进程

时间:2013-07-15 20:45:14

标签: c linux background-process jobs ncurses

问题:

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

问题(S):

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

注意:

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

感谢任何和所有帮助。


状态更新

2013年7月17日

  • 查看ncurses文档,了解initscr()在发送到后台时导致程序中断的原因。

  • 研究过程状态的检测。

1 个答案:

答案 0 :(得分:0)

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

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

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

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