可以參考這個連結的 code: Unix Domain Socket,我後來發現我們 project 裡的 code 也是參考這邊的= =|||,不過的確是還缺少一些東西,像是可以再加上 select 或是 pselect 來另外處理 signal,我自己是用 pselect 就是,有想過用 ppoll 來做,不過實際會聽的連線很少,感覺沒必要就直接用 pselect 了。

修正一下,之後還是改用 ppoll 好了XD,查了一下資料,就算是一個 socket,poll 還是比 select 快~~,參照 Comparative measurements and analysis of I/O event notification mechanismsepoll看起來還是不用考慮,因為 event-based 在基本處理上的 overhead 都會比較大,只有一個 socket 的話還會比 poll 慢,上面連結內的數據也是顯示如此。

另外就是傳送資料的方式,因為是 local UNIX socket,所以就直接用 struct 轉了(炸),如果是不同機器上用 TCP socket 的話,這樣其實會有 endian 和 padding 的問題,參照以下連結:

不是改用 Protocol Buffers 這類的 library 封裝,不然就是直接用字串傳了。

Ref: