1. 程式人生 > >[Linux/Qnx] 遇到一個問題 Stopped (tty input)

[Linux/Qnx] 遇到一個問題 Stopped (tty input)

lin body con 有關 linux 由於 func span emp

想讓發送數據的進程在後臺運行,但是一啟動該進程就出現這個問題。

一般這個問題可能和以下原因有關:

"[1] + Stopped (tty input)", 是指程序試圖從控制終端讀, 但是由於在後臺運行, 受到SIGTTIN信號而被停止:
man signal有下面的輸出:

21 SIGTTIN stop process background read attempted from control terminal

下面的程序演示了這種情況:

void sig_ttin(int signum)
{
        (void)printf("%s: SIGTTIN caught.n", __func__);
        signal(SIGTTIN, SIG_DFL);
}
int main(void) { int n; signal(SIGTTIN, sig_ttin); scanf("%d", &n); return 0; }

但是我猜測可能是因為該進程要從串口讀取數據,而此串口就是與調試終端連接的串口,所以此進程與終端(tty)因此關聯起來,屬於前臺進程組。

因為測試發現即使在向stdout發送字符,也可以把進程放到後臺,只要不打開串口。

相關的東東:

linux/qnx command : jobs, fg, nohup

[Linux/Qnx] 遇到一個問題 Stopped (tty input)