簡體   English   中英

在現代 Linux(即 ver>=3.0.0)上,是否有更簡單的方法在不相關的進程之間共享文件描述符?

[英]Is there an easier way to share file descriptors between unrelated processes on modern day Linux (i.e., ver>=3.0.0)?

與使用sendmsg()系統調用通過 UNIX 域套接字發送它(類型設置為SCM_RIGHTS的消息sendmsg()相比,Linux 是否提供了一種更好的方式將 fd 從一個進程發送到另一個進程以進行共享? 我想最好的可能性是能夠以某種方式命名一個 fd,然后在一個不相關的過程中(按名稱)打開它,但我對其他選擇持開放態度。

我問這個問題的原因是能夠在沒有父子關系的進程之間使用 *fd() 函數(例如, eventfd()timerfd()signalfd()等...),使其成為共享文件描述符要困難得多。

這個例子 - 基於libancillary - 顯示了如何在不相關的prcoesses之間傳遞eventfd。 請參閱evclient.c和evserver.c代碼。

https://github.com/mhaberler/libancillary

https://www.normalesup.org/~george/comp/libancillary/ 上有一個庫可以為您執行此操作,該庫通過復制到它們的樹中在許多項目中使用,但主要的 git 主機不再存在.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM