新聞中心
pipe用來創(chuàng)建管道,但是單個(gè)管道只能單向通信,一端用于讀,而另一端用于寫。如果要實(shí)現(xiàn)進(jìn)程雙向通信,必須創(chuàng)建一對(duì)管道。具體實(shí)現(xiàn)忽略。而socketpair則可以用來創(chuàng)建雙向通信的管道。取決于底層實(shí)現(xiàn),打開的還是一個(gè)文件,fd[0],fd[1],管道中f[0]讀端,f[1]寫端。
#include
#include
int socketpair(int domain, int type, int protocol, int sv[2]);
domain:選用AF_LOCAL;
type:SOCK_STREAM
protocol:默認(rèn)0
#include#include #include #include #include #include #include int main() { int fd[2]; if(socketpair(AF_LOCAL,SOCK_STREAM,0,fd)<0){ perror("sockpair"); return 1; } pid_t id=fork(); if(id<0){ perror("fork"); return 2; } else if(id==0){ close(fd[0]); char buf[1024]; while(1) { ssize_t _s; strcpy(buf,"hello bit"); write(fd[1],buf,strlen(buf)); _s=read(fd[1],buf,sizeof(buf)-1); buf[_s]='\0'; printf("father->child%s\n",buf); } close(fd[1]); } else{ close(fd[1]); char buf[1024]; while(1) { ssize_t _s=read(fd[0],buf,sizeof(buf)-1); if(_s>0){ buf[_s]='\0'; printf("child -> father %s\n",buf); } strcpy(buf,"hello world"); write(fd[0],buf,strlen(buf)); } close(fd[0]); //wait child } return 0;
運(yùn)行截圖:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:socketpair實(shí)現(xiàn)進(jìn)程通信-創(chuàng)新互聯(lián)
文章鏈接:http://fisionsoft.com.cn/article/dhdeoe.html