亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以將文件描述符共享給Linux上的另一個進程,還是它們是進程的本地進程?

我可以將文件描述符共享給Linux上的另一個進程,還是它們是進程的本地進程?

嗶嗶one 2019-08-09 09:47:31
我可以將文件描述符共享給Linux上的另一個進程,還是它們是進程的本地進程?假設我有2個進程,ProcessA和ProcessB。如果我int fd=open(somefile)在ProcessA中執行,那么我可以將文件描述符的值fd通過IPC傳遞給ProcessB并讓它操作同一個文件嗎?
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

如果兩個進程都屬于同一個用戶,那么您可以簡單地使用procfs。


char fd_path[64];  // actual maximal length: 37 for 64bit systems

snprintf(fd_path, sizeof(fd_path), "/proc/%d/fd/%d", SOURCE_PID, SOURCE_FD);

int new_fd = open(fd_path, O_RDWR);

當然你需要一些IPC機制來分享價值SOURCE_FD。


查看完整回答
反對 回復 2019-08-09
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

您可以使用此線程中描述的方法或者(更常規)方法,通過創建它來在相關進程(通常是父子或兄弟)之間共享它,分叉進程自動接收副本。

實際上,分叉進程會獲取所有FD并且可以使用它們,除非它們關閉它們(這通常是一個好主意)。

因此,如果父級分叉兩個孩子,如果他們都有一個文件描述符,他們沒有關閉,現在它被共享(即使父母隨后關閉它)。例如,這可能是從一個孩子到另一個孩子的管道。這就是shell重定向的方式

ls -l | more

工作。


查看完整回答
反對 回復 2019-08-09
  • 3 回答
  • 0 關注
  • 996 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號