我是新來與派生的工作,我有了解如何實現我想要什麼麻煩。我會盡力解釋。分岔並通過插座C++
我有方法A這是運行在Linux上的官能伯克利套接字服務器。
我需要過程A在後臺狀態從磁盤加載程序到一個單獨的無阻塞處理(處理B)。然後過程A需要傳遞過程A的套接字的過程B控制。最後過程A需要結束,使過程B運行。
我在什麼需要,如果舊的結束到插座傳遞到一個新的進程,並創建一個無阻塞的新工藝,使原來的進程結束的最好方式尚不清楚。
我是新來與派生的工作,我有了解如何實現我想要什麼麻煩。我會盡力解釋。分岔並通過插座C++
我有方法A這是運行在Linux上的官能伯克利套接字服務器。
我需要過程A在後臺狀態從磁盤加載程序到一個單獨的無阻塞處理(處理B)。然後過程A需要傳遞過程A的套接字的過程B控制。最後過程A需要結束,使過程B運行。
我在什麼需要,如果舊的結束到插座傳遞到一個新的進程,並創建一個無阻塞的新工藝,使原來的進程結束的最好方式尚不清楚。
沒有什麼特別的,你需要做的。只要確保close on exec標誌被清除了,您希望進程B繼承的任何文件描述符,併爲您不希望進程B繼承的任何文件描述符進行設置。然後調用exec
以將進程A替換爲進程B.進程B將從所有可繼承的文件描述符開始。
如果您需要通過打開的文件(如套接字)而不使用繼承式分支,則可以使用ioctl
和I_SENDFD
。 Here is a very detailed description。 (有一個相應的接收機制。)你可以使用一個命名管道來實現這一點,該管道將進程或變體與Unix域套接字連接起來。
是否在啓動B之前或之後獲取套接字? – Barmar
我很好奇,如果有一種方法可以在進程之間共享文件句柄。但是讓我問一下:你是否考慮過將這兩個程序結合起來,並在兩個代碼路徑之間使用線程共享數據和套接字句柄?的 – selbie
可能的複製問題: http://stackoverflow.com/questions/909064/portable-way-to-pass-file-descriptor-between-different-processes – selbie