Bash

後台程序的stdout輸出會被當作前台程序的stdin輸入嗎?

  • April 11, 2016

當後台程序輸出到標準輸出出現在終端上時,輸出是否會被視為前台程序的標準輸入?請注意,後台和前台程序與管道無關。

我有這個問題是因為目前台程序等待標準輸入時,我可以在終端中輸入來提供它。後台程序的 stdout 輸出似乎在做同樣的事情,即後台程序在終端中“鍵入”,而前台程序正在等待 stdin 輸入。那麼為什麼前台程序不將後台程序的stdout輸出作為stdin輸入呢?

根據我的經驗,似乎沒有。如果我是對的,為什麼不呢?

終端在概念上與程序stdinstdout. 這可能會讓人感到困惑,因為我們談論的是鍵盤輸入和螢幕輸出的“終端”。

但是,程序可以從鍵盤讀取輸入,而無需將其回顯到螢幕。例如,當您登錄時,您的密碼會從您輸入的輸入中讀取,但不會出現在螢幕上。

當然,一個程序可以將輸出列印到螢幕上,而無需您在鍵盤上輸入。

可以(例如使用tee)將輸出流寫入螢幕並將其傳遞給另一個程序,但這並不能使它們相同。

簡而言之,在螢幕上列印內容與在鍵盤上輸入內容不同,儘管我們使用“終端”一詞來描述兩者。

引用自:https://unix.stackexchange.com/questions/275788