Bash 中的管道獲取一個行程的標準輸出并將其作為標準輸入傳遞給另一個行程。Bash 腳本支持可以在命令列中傳入的位置引數。
我正在使用 Linux 命令和管道總是出現。管道化一個行程的標準輸出是什么意思?我知道輸出將被發送到管道中的下一個命令,但是如何?它究竟是如何發生的?為什么在子 shell 中創建的變數不能通過管道傳輸?
uj5u.com熱心網友回復:
管道化一個行程的標準輸出是什么意思?
這意味著執行pipe系統呼叫。然后,fork一個行程執行dup2系統呼叫以將表示標準輸出流的檔案描述符復制到由pipe. 然后,fork第二個行程執行相同的操作,dup2但使用標準輸出檔案描述符和pipe.
但如何?它究竟是如何發生的?
write在系統呼叫回傳的檔案描述符之一上從一個行程呼叫pipe系統呼叫,它為管道執行一個處理程式,一個內核函式,從用戶空間行程獲取緩沖區的內容并將其放置在回圈保持緩沖區中。
當其他行程read對系統呼叫回傳的其他檔案描述符執行系統呼叫時pipe,內核函式從管道回圈保持緩沖區中讀取元素并將資料復制到用戶給定的緩沖區,并推進保持緩沖區。
我可以管道變數的內容嗎?你能把這個包括在你的答案中嗎?
您可以執行write將變數內容發送到標準輸出的行程,并將該行程連接到管道。即echo "$var" |。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/517584.html
標籤:重击
上一篇:避免在嵌套選擇中持續提示
