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


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

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

"[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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM