C ++ Linux - 键盘按键

时间:2018-06-05 12:51:03

标签: linux linux-device-driver embedded-linux

我有一个打印到终端输出的应用程序 将它放在后台(用'&'),然后按任意键,例如按Enter键 重新显示提示(只是为了检查我在某些输出时仍然处于bash状态 从后台进程已经显示),后台进程似乎自发停止:

    [1] Stopped (tty output) app

我理解它是因为进程得到SIGTTIN或SIGTTOU,这里可能是SIGTTIN,如果是printf等则是SIGTTOU 所以我有两个问题:
1。我试图从应用程序端处理它,只是阻止SIGTTOU和SIGTTIN,它有助于这种情况,我可以按下shell中的任何键, 当我在前台执行进程时 - 当然我的所有击键都被忽略!!! 所以,如何处理,以便它在fg bg中工作 也许从终端和tty分离进程,但应用程序仍然能够打印到控制台?

2。一般来说,谁必须处理这些信号?应用程序或者它应该在tty配置中处理。 (TOSTOP?)

提前感谢!

1 个答案:

答案 0 :(得分:0)

1。如何处理才能在fg和bg中正常工作?

如果您的应用仅将输出打印到控制台,则SIGTTIN或SIGTTOU不会有问题。

在您的情况下,您的应用似乎将输出打印到控制台,并且需要来自控制台的输入。 如果您的应用程序必须打印输出并且必须等待控制台输入,则无法成功在bg中运行该应用程序。

2。谁必须处理这些信号?

通常,应用应处理这些信号。您应该选择SIG_DFL(默认操作),SIG_IGN(忽略)或程序员定义的函数之一。