问题:
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/