2012-04-30 57 views
1

我試圖通過一個已建立的連接從進程A的Unix域套接字文件描述符通過另一個Unix域套接字連接處理B,沒有運氣 雖然TCP套接字傳遞沒有問題。 有沒有理由或我做錯了什麼? 兩者都通過解密消息 Thanx我可以通過另一個UDS文件描述符通過c或C++中的另一個UDS連接

+0

請張貼一些代碼,顯示您觀察到的問題。 –

+0

我想了解是否有一個已知的傳遞fd代表一個已打開的UDS連接的限制。 – AC78

回答

1

套接字文件描述符(就像常規文件描述符一樣)在正確創建它們的進程外部絕對沒有任何意義。當你發送一個fd到其他進程時,你只是發送一堆字節 - 沒有什麼比這更多的了。

的唯一方法,你可以移動工作fd從一個過程到另一個是fork()包含fd傳遞的過程。

如果你想要一些進程連接到一個特定的Unix套接字,你應該傳遞一個unix套接字文件系統入口名稱到該進程。接收過程可以正確地創建套接字並在之後建立連接。

我不知道你爲什麼沒有通過tcp socket的問題fd。也許如果你發佈你的代碼的相關部分,原因將被揭示。

+1

'fork()'不是將工作fd從一個進程移到另一個進程的唯一方法。 'SCM_RIGHTS' [輔助消息](http://linux.die.net/man/3/cmsg)允許通過unix套接字發送文件描述符到另一個進程。 –

+0

@SamMiller好點,我不知道。 –

+0

我用SCM_RIGHTS輔助消息來傳遞tcp連接,當我嘗試傳遞一個UDS連接時,我失敗了。所以,有沒有理由或我做錯了什麼 – AC78

相關問題