Linux下socketpair使用總結

2021-09-25 10:48:18 字數 931 閱讀 3629

#include #include int socketpair(int d, int type, int protocol, int sv[2]);
socketpair函式建立一對無名的相互連線的套接字。

返回值:成功返回0,建立好的套接字分別為sv[1]和sv[2];否則返回-1,錯誤碼儲存於errno中。

1.這對套接字可以用於全雙工通訊,每乙個套接字即可以讀也可以寫。例如:可以往sv[0]中寫,從sv[1]中讀;或者從sv[1]中寫,從sv[0]中讀;

2.如果往乙個套接字中寫入,只能從另乙個套接字中讀取;

3.讀寫操作可以位於同乙個程序,也可以位於不同的程序,如父子程序,如果是父子程序,一般會功能分離,乙個程序用來讀,乙個用來寫。因為檔案描述符sv[0]和sv[1]是程序共享 的,所以讀的程序要關閉寫描述符,反之,寫的程序關閉讀描述符。

#include #include #include #include #include #include #include #include const char* str = "socket pair test.";

int main(int argc, char* ar**);

int socket_pair[2];

pid_t pid;

if(socketpair(af_unix, sock_stream, 0, socket_pair) == -1 )

int size = write(socket_pair[0], str, strlen(str));

//可以讀取成功;

read(socket_pair[1], buf, size);

printf("read result: %s\n",buf);

return exit_success;

}

Unix Linux程式設計 socketpair

管道內部傳輸的是位元組流,tcp socket傳輸的也是位元組流,區別在於 socket的基礎api中有乙個socketpair函式。它能夠方便的建立雙向管道 include include socketpair 函式用於建立一對無名的 相互連線的套接子。引數 domain必須是unix本地域協議族...

Linux下Redis下安裝

redis安裝 檢查是否安裝redis ps ef grep redis2.檢查gcc服務是否安裝成功 rpm qa grep gcc注 安裝成功則顯示 mkdir redis5.解壓redis安裝包 tar zxvf redis 2.8.17 tar.gz c usr local redis 解壓...

Linux下程式設計

windows下我的環境為 windows10 vs2015 opencv3.4.0 opencv3.4.0 contrib python linux下我的環境為 ubuntu16004 也有ubuntu1804 opencv3.4.0 opencv3.4.0 contrib python gnu ...