Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119446
  • 博文数量: 61
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-26 11:35
个人简介

实践Linux的理论

文章存档

2015年(1)

2014年(60)

我的朋友

分类: C/C++

2014-04-29 21:24:54

Linux系统本身为进程间通信提供了很多的方式,比如说管道、共享内存、socket通信等。管道的使用十分简单,在创建了匿名管道之后,我们只需要从一个管道发送数据,再从另外一个管道接受数据即可。
[cpp] view plaincopy
#include  
#include  
#include  
#include  
  
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,过一会儿你就可以看到下面的打印了。
[cpp] view plaincopy
[test@localhost pipe]$ ./pipe  
Send data to client, hello!  
Receive data from server, hello!  

阅读(656) | 评论(0) | 转发(0) |
0

上一篇:多线程编程

下一篇:进程-信号处理

给主人留下些什么吧!~~