当前位置 博文首页 > linux C语言开发管道通信实例详解

    linux C语言开发管道通信实例详解

    作者:admin 时间:2021-06-29 19:07

    linux C语言开发管道通信

       Linux系统本身为进程间通信提供了很多的方式,比如说管道、共享内存、socket通信等。管道的使用十分简单,在创建了匿名管道之后,我们只需要从一个管道发送数据,再从另外一个管道接受数据即可。

    #include <stdio.h> 
    #include <unistd.h> 
    #include <stdlib.h> 
    #include <string.h> 
     
    int pipe_default[2]; 
     
    int main() 
    { 
     pid_t pid; 
     char buffer[32]; 
     
     memset(buffer, 0, 32); 
     if(pipe(pipe_default) < 0) 
     { 
      printf("Failed to create pipe!\n"); 
      return 0; 
     } 
     
     if(0 == (pid = fork())) 
     { 
      close(pipe_default[1]); 
      sleep(5); 
      if(read(pipe_default[0], buffer, 32) > 0) 
      { 
       printf("Receive data from server, %s!\n", buffer); 
      } 
      close(pipe_default[0]); 
     } 
     else 
     { 
      close(pipe_default[0]); 
      if(-1 != write(pipe_default[1], "hello", strlen("hello"))) 
      { 
       printf("Send data to client, hello!\n"); 
      } 
      close(pipe_default[1]); 
      waitpid(pid, NULL, 0); 
     } 
     
     return 1; 
    } 
    

        下面我们就可以开始编译运行了,老规矩分成两步骤进行:(1)输入gcc pipe.c -o pipe;(2)然后输入./pipe,过一会儿你就可以看到下面的打印了。

    [test@localhost pipe]$ ./pipe 
    Send data to client, hello! 
    Receive data from server, hello! 

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    js
    下一篇:没有了