UNIX域套接字 填充時注意事項

2021-09-25 05:45:19 字數 627 閱讀 7235

unix域協議用於單個主機中伺服器和客戶端通訊(屬於ipc),提供位元組流套接字(類似tcp)和資料報套接字(類似udp)

struct sockaddr_un ;
存放在sun_path陣列中的路徑名稱必須以空字元結尾。如果沒有指定位址,那麼就是sun_path[0]的值,為0,因為使用前我們

對結構體清空了。這個值等價於ipv4的inaddr_any,或者ipv6的in6addr_any_init.

填充位址時,需要注意,posix規範沒有定義sun_path陣列大小,填充時,應該自己計算,以確定會不會越界。名稱使用絕對路徑

struct sockaddr_un addr1;

char pathname = "/mnt/myself";

memset(&addr1, 0, sizeof(addr1));

addr1.sun_family = af_local;

len = sizeof(addr1.sun_path);

if(strlen(pathname) > (len - 1))

strncpy(addr1.sun_path, pathname , strlen(pathname));

套接字程式設計注意事項

被中斷的系統呼叫 驚群問題 read 記憶體對齊和位元組序 tcp粘包問題 訊號 sigchld訊號和殭屍程序 多程序伺服器需要處理sigchld訊號,sigchld缺省會導致程序終止 不 子程序會導致殭屍程序太多 迴圈是因為訊號不會累計,避免多個子程序同時結束,而只 乙個子程序。建議做法 捕捉訊號...

unix域套接字 IPC

沒用過域套接字,一般都用管道來進行程序通訊,不過聽說域套接字比管道好。就試試吧。域套接字在socket函式建立的時候,第二個字段,可以是sock stream,也可以是sock dgram。可是在用sock dgram建立接收端的時候,我發現,它可以不用listen和accept過程,直接接收就可以...

UNIX域套接字程式設計

unix 域套接字 uds unix domain socket。unix域協議並不是乙個實際的協議族,而是在單個主機上執行客戶 伺服器通訊的一種方式,單個主機上執行通訊,也就是所謂的進行間通訊 ipc 所以unix域套接字協議可以視作ipc方法之一。unix域提供兩中套接字api 位元組流套接字 ...