我正在編寫一個應用程序,該應用程序分爲Mac OS X兩個部分 - 一個守護程序和一個代理程序。我使用標準的unix套接字在守護進程和代理之間進行通信。也就是說,套接字是用PF_UNIX
和SOCK_STREAM
創建的。阻止unix域套接字的問題
當創建代理(每當用戶登錄時),它所做的第一件事情之一就是連接到套接字。這對第一個代理人來說似乎是完美的。但是,當第二個代理連接時,守護進程遇到以下問題:
我正在使用select()
來檢查可以讀取的數據。調用成功,並指示有數據要讀取。然而,當我打電話recv()
它-1
返回,並errno
設置爲35
,或現在"Resource temporarily unavailable".
,我希望這對於非阻塞套接字,但我有三重檢查 - 我從來沒有插座設置是非阻塞的。
據我所知,只有當第二個代理連接到相同的unix套接字時纔會發生這種情況。如果我只限於一個守護進程和一個代理,那麼一切似乎都完美無缺。什麼可能導致這種奇怪的行爲?