linux中用無名管道進行文件的讀寫
阿新 • • 發佈:2017-05-18
lin nbsp 例子 erro images 是什麽 管道 linux mage
1管道是什麽:
水管子大家知道,有兩端,在此一端用來讀一端用來寫,其中一端的輸出作為另外一端的輸入。
2 函數原型
int pipe(int pipefd[2]);//參數中分別代表的兩端
3 例子:管道一端作為寫 另外一端作為讀 父子進程實現
1 #include <unistd.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 pid_t pid; 8 int temp; 9 int pipedes[2]; 10 chars[14]="letgo"; 11 char d[14]; 12 if((pipe(pipedes))==-1) 13 { 14 perror("pipe"); 15 exit(EXIT_FAILURE); 16 } 17 18 if((pid=fork())==-1) 19 { 20 perror("fork error"); 21 exit(EXIT_FAILURE); 22 }else if(pid==0) 23 { 24 //printf(“子進程寫數據到管道讀端”);25 printf("子進程寫數據到管道讀端\n"); 26 if((write(pipedes[1],s,14))==-1) 27 { 28 perror("write"); 29 exit(EXIT_FAILURE); 30 }else 31 { 32 printf("所寫入得數據是%s\n",s); 33 exit(EXIT_SUCCESS); 34 } 35 }else if(pid>0) 36 { 37 sleep(2);//等待子進程結束 38 printf("父進程從管道讀數據\n"); 39 if((read(pipedes[0],d,14))==-1) 40 { 41 perror("read"); 42 exit(EXIT_FAILURE); 43 } 44 printf("從管道讀端讀出得數據是%s\n",d); 45 } 46 47 return 1; 48 }
運行結果:
linux中用無名管道進行文件的讀寫