linux通过管道的进程通信,Linux进程通信:管道要点

管道的认识从command1 | command2 认识开始,到现在做A2DP升华,写一些使用FIFO的要点下来。

1   管道一般用于进程间通信,把一个进程的输出通过管道送给另一个进程。

2   可以通过popen,pclose尝试实现command1 | command2 。

File *popen(const char * command, const char *open_mode);

open_mode: r or w

File a =popen("uname -a", "r");

fread(buffer, 1, BUFSIZE, a);

printf("%s", buffer);

>> Linux Ubuntu 8.09..................

3   pipe创建管道

#include

int pipe(int file_description[2]);

pipe的参数是由两个文件描述符组成的数组。file_description[0] 用于读管道, file_description[1] 用来写管道。

4   命名管道:mkfifo

#include

#include

int mkfifo(const char * filename, mode_t mode);

mode: O_RDONLY, O_WRONLY, O_NONBLOCK.

共四种组合:

O_RDONLY:阻塞读方式打开,除非有进程以写方式打开,不然阻塞。

O_RDONLY|O_NONBLOCK:  不论怎样,立即返回,总是成功

O_WRONLY: 阻塞写方式打开,直到有人来读,不然阻塞

O_WRONLY|O_NONBLOCK: 立即返回,但如果没人以读方式打开,返回-1错误

FIFO SIZE:#include , PIPE_BUF, default 4096

多个进程可以写同一个管道。

posted on 2009-08-09 17:24 攀升 阅读(1642) 评论(2)  编辑 收藏 引用 所属分类: Linux

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值