- 论坛徽章:
- 0
|
管道是UNIX IPC的最老的形式,并且所有的UNIX系统都提供这种进程间通信机制
管道有两种限制:
(1)管道是半双工的,数据只能在一个方向传送。
(2)管道只能在具有共同祖先的进程之间使用,通常一个管道由一个进程创建,
然后该进程调用 fork(),此后父子进程可以通过该管道通信。
下面是一个例子,父进程向管道写一个字符串,子进程从管道获取字符串并将字符串
转换为小写字母。
#include
#include
#include
#include
#define MAXLINE 1024
char* str_tolower(char * str) {
int i, len = strlen(str);
for(i = 0; i 0) { /*parent*/
close(fd[0]);
write(fd[1], line, strlen(line));
} else { /*children*/
close(fd[1]);
n = read(fd[0], line, MAXLINE);
p = str_tolower(line);
write(STDOUT_FILENO, line, n);
}
exit(0);
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28729/showart_230715.html |
|