unlink:刪除一個文件,若成功則返回0,否則返回-1,錯誤原因存於errnounlink()會刪除參數pathname指定的文件。如果該文件名爲最後連接點,但有其他進程打開了此文件,則在所有關於此文件的文件描述詞皆關閉後纔會刪除。如果參數pathname爲一符號連接,則此連接會被刪除。
offsetof : #define offsetof (size_t) (((s*)0)->m):stddef.h中定義
(s*)0是騙編譯器說有一個指向類(或結構)s的指針,其地址值0
&((s *)0)->m 是要取得類s中成員變量m的地址. 因基址爲0,這時m的地址當然就是m在s中的偏移
原因:unix 域套接字的效率高於網絡域的套接字:用於統一臺機器上運行的進程間通信。
serv_listen:
1 獲取socket
2填寫sockaddr_un 結構
3 bind
4linsten:告訴內核我是服務器進程
serv_accept:
1accept:獲取端口處來請求服務的客戶地址
2然後取出套接字狀態stat
3判斷是否爲客戶進程來訪問
cli_connect
1獲取socket
2填寫地址:確保套接字名字沒被打開:unlink(sun_path)
3bind
4,填寫服務器地址
5請求鏈接connect