file descriptor 檔案描述符的問題 - Linux

Table of Contents


大家好,想詢問一下,一個觀念問題,


看到書上說,program 執行的時候,

shell 會幫忙開啟 3 個檔案描述符,分別是

stdio (0)
stdout (1)
stderr (2)

這個我了解,


我的問題在於,
請問這 3 個 fd 是 global 的嗎?

意思就是 process A / process B / process C,

這 3 個 processes 在運行的時候,

所拿到 stdin, stdout, stderr 是同樣的 fd 嗎?



還是是分別在各自的 name space 裡面?

意思就是,

process A 的 stdin ,與 process B 的 stdin 不同?



有什麼方法可以驗證嗎?

謝謝


還請各位前輩解惑了,

謝謝

--

All Comments

Frederic avatarFrederic2021-04-25
你想成像是c的指標,各process有自己1份,預設都指向目前的
Donna avatarDonna2021-04-27
tty/pty,輸出(入)導向ofile(ifile)則會指到新開啟的該檔
file descriptor
Audriana avatarAudriana2021-04-30
或者更簡單一點說,不要想成有什麼特殊,就想成不同process
James avatarJames2021-05-04
都可以去開啟同一個foobar檔案,每一個process開啟模式(讀
或寫)各自不同,讀取/寫入的位置也各自不同