管道實驗(三)
阿新 • • 發佈:2018-12-24
編寫程式實現以下功能:
利用有名管道檔案實現程序間通訊
要求寫程序向有名管道檔案寫入10次“hello world”
讀程序讀取有名管道檔案中的內容,並依次列印。
有名管道的特點:
1.有名管道支援讀寫操作,並且存在於檔案系統中
2.能夠使用使用read和write直接對有名管道進行操作。
3.有名管道是雙向管道。
4.可以用於任意程序間的通訊,不像匿名管道具有侷限性。
我們能夠像操作一個檔案一樣操作有名管道。
實驗程式碼:
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> int main() { int pid,fd; if(mkfifo("fifotest",0666) < 0) perror("mkfifo"); pid = fork(); if(pid < 0) perror("fork"); else if(pid == 0) { printf("This is the write process!\n"); int fd = open("fifotest",0666); for(int i = 0; i < 10;i++) { if(write(fd,"hello world",12) < 0) perror("write"); sleep(1); } close(fd); } else { char str[128]; printf("This is the read process!\n"); int fd1 = open("fifotest",0666); for(int i = 0;i < 10;i++) { if(read(fd1,str,128) < 0) perror("read"); else printf("%s\n",str); } system("rm -f fifotest"); } }
實驗結果:
實驗完成。