[問題] file descriptor 檔案描述符的問題

看板Linux作者 (gowrite)時間3年前 (2021/04/21 15:51), 編輯推噓0(006)
留言6則, 1人參與, 3年前最新討論串1/1
大家好,想詢問一下,一個觀念問題, 看到書上說,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 不同? 有什麼方法可以驗證嗎? 謝謝 還請各位前輩解惑了, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.173.190.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1618991484.A.DC9.htmlgowrite:轉錄至看板 LinuxDev 04/21 15:51

04/21 16:26, 3年前 , 1F
你想成像是c的指標,各process有自己1份,預設都指向目前的
04/21 16:26, 1F

04/21 16:27, 3年前 , 2F
tty/pty,輸出(入)導向ofile(ifile)則會指到新開啟的該檔
04/21 16:27, 2F

04/21 16:27, 3年前 , 3F
file descriptor
04/21 16:27, 3F

04/21 16:28, 3年前 , 4F
或者更簡單一點說,不要想成有什麼特殊,就想成不同process
04/21 16:28, 4F

04/21 16:29, 3年前 , 5F
都可以去開啟同一個foobar檔案,每一個process開啟模式(讀
04/21 16:29, 5F

04/21 16:29, 3年前 , 6F
或寫)各自不同,讀取/寫入的位置也各自不同
04/21 16:29, 6F
文章代碼(AID): #1WVzbyt9 (Linux)