Linux程序間如何傳遞檔案描述符?

時間 2021-05-14 11:54:26

1樓:Tools boy

每個程序的檔案描述符都是唯一的;

檔案描述符是file_struct結構中的file(開啟檔案建立的物件)指標陣列的索引,file物件只有開啟檔案時才會建立並與檔案描述符相關聯fd_install(fd, f);

程序間傳遞檔案描述符除了父子程序外,沒啥意義.父子程序之間會將file_struct的file指標陣列全部拷貝,所以子程序才可以用父程序fd.

2樓:

參考nginx的實現,使用socketpair通過unix domain socket來傳遞。

如何在程序之間傳遞檔案描述符(file discriptor)

這類問題google一下就出來了

3樓:wugui master

unix網路程式設計第15章 unix domain socket 可以實現非同源程序間描述符傳遞

我沒有看過原始碼,我推測每乙個程序都有乙個描述符表,表項的內容指向了檔案,表項的索引就是描述符。所以需要將描述符對應的表項拷貝到另一程序,而不是拷貝描述符。fork之後子程序可以沿用父程序的描述符是因為fork時描述符表被拷貝到了子程序的記憶體空間。

4樓:鍾宇騰

c - Can I share a file descriptor to another process on linux or are they local to the process?

php多程序間通訊的問題,程序池如何儲存?

codinghuang 看你的想法,是打算用純PHP寫乙個類似Swoole的非同步伺服器。那我直接說Swoole的實現實現思路了。第乙個問題,Masrer程序如何和Worker程序通訊。這個不是把Worker程序存起來,然後和Worker程序通訊。Master程序和Worker程序通訊是使用udg。...

程序間通訊中有名管道的FIFO檔案和一般檔案有什麼區別

the gc 說說我的理解 這個得先說匿名管道的缺點,匿名管道無法讓兩個沒有關係的程序通訊。原因在於他是基於記憶體的,其他程序沒有辦法找到這塊記憶體,也就沒有辦法通訊了。那麼命名管道的意義就在於,他有了名字,有了名字,每個程序就能找到他,也就可以完成通訊了。具體的實現來說,命名管道的檔案不是用來承載...

Linux 一切皆檔案,那麼如何通過檔案修改時間?

陳小紫 一切皆檔案這個表述有問題啊 系統時間 另乙個回答中說使用date這個命令來修改時間,那麼其實date修改和讀取的就是系統時間。一般來說所有程式呼叫的時間都是系統時間。sudo sbin hwclock 可以訪問硬體時間,當然這個時間一般也是經過了時區換算了的,如果加入 localtime引數...