linux 基於命名管道實現的伺服器客戶端

2021-08-21 13:52:22 字數 977 閱讀 7615

前兩天學習了命名管道,今天就基於命名管道來實現乙個簡單的伺服器客戶端。

伺服器端的實現思路

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...