前兩天學習了命名管道,今天就基於命名管道來實現乙個簡單的伺服器客戶端。
伺服器端的實現思路
1. 首先建立乙個命名管道
2. 從這個命名管道中讀資料
3. 將讀到的資料列印在標準輸出上
具體**
#include #include #include #include #include int main()
int rfd = open("mypipe",o_rdonly);
if(rfd < 0)
perror("open");
char buf[1024] = ;
while(1)
close(rfd);
return 0;
}
客戶端的實現思路
1. 開啟命名管道
2. 向命名管道中寫資料
具體實現
#include #include #include #include #include #include #include int main()
; while(1)
close(wfd);
return 0;
}
在寫這次的**時,需要一次編譯兩個 .c 檔案,之前寫的makefile是只能編譯乙個檔案的,所以,就學習了一次可以編譯多個原始檔的makefile的寫法。
.phony:all
all:server client
server:server.c
gcc server.c -o server
client:client.c
gcc client.c -o client
.phony:clean
clean:
rm -rf server client mypipe
Linux命名管道
命名管道實現了沒有親緣關係的程序的通訊,建立命名管道時候,系統建立了乙個fifo的檔案,通過對檔案的操作,實現走了沒有親緣關係的管道也可以資料交換,相比普通管道 命名管道多了管道的開啟和刪除,因為是檔案嗎,當然劇本檔案的屬性了。1.可以通過該shell命令建立命名管道,mknod 和mkfifo,比...
linux的管道和命名管道
看了個教程,感覺還是要結合 看。管道是linux裡面程序間通訊的一種方式,其他的還有像訊號 signal 訊號量 訊息佇列 共享記憶體 套接字 socket 等。1.管道pipe int pipe int fd 2 返回值 成功,返回0,否則返回 1。引數陣列包含pipe使用的兩個檔案的描述符。fd...
命名管道(FIFO)的實現
管道隨程序 命名管道是乙個裝置檔案,是存在於硬碟上的檔案 用mkfifo 建立命名管道,可用於任何兩個程序之間的通訊 client.c 寫端 include include include include include include include define path tmp file.tm...