文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>IPC -- 管道

IPC -- 管道

时间:2007-01-12  来源:njuguo

管道是UNIX IPC的最老的形式,并且所有的UNIX系统都提供这种进程间通信机制
管道有两种限制:
(1)管道是半双工的,数据只能在一个方向传送。
(2)管道只能在具有共同祖先的进程之间使用,通常一个管道由一个进程创建,
        然后该进程调用 fork(),此后父子进程可以通过该管道通信。

下面是一个例子,父进程向管道写一个字符串,子进程从管道获取字符串并将字符串
转换为小写字母。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#define MAXLINE 1024

char* str_tolower(char * str) {
        int i, len = strlen(str);
        for(i = 0; i < len; i++) {
                if(isupper(str[i]))
                        str[i] = tolower(str[i]);
        }
        return str;
}

int
main(void) {
        int     n, fd[2];
        pid_t   pid;
        char    line[MAXLINE], *p;
        strcpy(line, "HELLO WORLD!");

        if(pipe(fd) < 0) {
                fprintf(stderr, "pipe error");
                exit(1);
        }

        if((pid = fork()) < 0) {
                fprintf(stderr, "fork error");
                exit(2);
        }
        else if(pid > 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);
}
相关阅读 更多 +
排行榜 更多 +
挖掘机卡车

挖掘机卡车

模拟经营 下载
我的汤姆猫小米版

我的汤姆猫小米版

模拟经营 下载
我的小小邮轮

我的小小邮轮

模拟经营 下载