linux c 進程 pipe 通訊程式碼分析

來源:互聯網
上載者:User

標籤:linux   pipe   進程通訊   

[[email protected] 04]# cat ex04-3-pipe02.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>


int main(void){
   int result=-1;
   int fd[2],nbytes;
   pid_t pid;
   char string[]="hello,pipe";
   char readbuffer[80];


   int *write_fd = &fd[1];  //可寫
   int *read_fd = &fd[0];  //read


   result = pipe(fd);  //create pipe


   if(-1 == result){
     printf("create pipe faile");
     return -1;
    }


   pid=fork(); //分叉程式


   if(-1 == pid){
    printf("fork 進程失敗\n");
    return -1;
   }


   if(0 == pid ){
     close(*read_fd);
     /*向管道端寫入字元*/
     result=write(*write_fd,string,strlen(string));


   }else{
     close(*write_fd);
     /* read pipe data */
     nbytes=read(*read_fd,readbuffer,sizeof(readbuffer));
     printf("接收到%d 個資料,內容:%s \n",nbytes,readbuffer);
     printf("sizeof(readbuffer) =  %d\n",sizeof(readbuffer));
   }


   return 0;

}


--------------測試結果

[[email protected] 04]# ./ex04-3-pipe02
接收到10 個資料,內容:hello,pipe
sizeof(readbuffer) =  80


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.