在socket編程中,尤其是在處理struct sockaddr_un
類型的Unix域套接字,一些people useoffsetof()
計算sockaddr_un
結構的尺寸喜歡 -使用offsetof()而不是sizeof()與套接字是否有區別?
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[108]; /* pathname */
};
size = (offsetof (struct sockaddr_un, sun_path)
+ strlen (name.sun_path));
在一些other places,他們使用
size = sizeof(struct sockaddr_un)
我知道第一種方法佔用較短的路徑名,第二種方法給出固定的最大大小,而不考慮實際路徑長度。
它是否真的有所作爲bind
這個函數傳遞了這個值?如果不是,這兩個可以互換使用嗎?
第二個鏈接中的文檔說'大小'需要至少包含空終止符,因此第一個示例中的代碼需要'+ 1'。 – user2357112
'sockaddr_un'和'sockaddr_in'打算拼寫不同,還是其中一個拼寫錯誤? –
@凱瑟湯普森。我的意思是聯合國,不在英寸,糾正它。 –