3

问题:

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

问题):

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

笔记:

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

任何和所有的帮助表示赞赏。


状态更新

2013/07/17

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

  • 调查进程状态的检测。

4

1 回答 1

1

我认为罪魁祸首可能是(来自信号(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 发行版中的screen http://www.gnu.org/software/screen/ 。在分离的屏幕中运行您的进程,然后使用“screen -r -D”或类似命令重新连接。

于 2013-08-09T00:36:25.680 回答