Linux学习笔记之---管道

8:管道 
    8.1     无名管道
            无名管道通常直接称之为管道,它占用两个文件描述符,不能被非血缘关系                
            的进程共享,一般应用在父子进程中
            
    8.2     无名管道的建立
            #include <unistd.h>
            int pipe (int fildes[2]);
            函数pipe在内核中创建一个管道,并分配两个文件描述符标识管道的两端,
            这两个文件描述符存储于fildes[0],fildes[1]中,一般约定fildes[1]
            描述管道的输入端,进程向此文件描述符中写入数据,fildes[0]描述管道
            的输出端,调用成功返回0,否则返回-1.
            
    8.3     从父进程流向子进程的管道
            1.创建管道
            int fildes[2];
            pipe(fildes);
            2.创建子进程,子进程继承父进程的管道文件描述符(p210图)
            3.父进程关闭管道的输出端,即fildes[0]
            close(fildes[0]);
            4.子进程关闭fildes[1]
            close(fildes[1])
                     
    8.4     popen模型
            #include <stdio.h>
            FILE *popen (const char *command, char *type);
            int pclose (FILE *stream);            
            popen首先fork一个子进程,然后调用exec执行参数command中给定的shell
            命令,不同的是,函数popen自动在父进程与子进程之间建立了一个管道,
            这个管道可以链接子进程的标准输入,也可以链接输出,取决于type:
            r          管道数据由子进程流向父进程
            w          管道数据由父进程流向子进程
            
    8.5     有名管道的建立
            1.mknod创建管道
            mknod name p        创建管道文件
            mknod name s        创建信号量
            mknod name m        创建共享内存
            例1:创建有名管道k1
            mknod k1 p;
            2.命令mkfifo创建管道
            mkfifo [-m mode] file...
            mode 是管道文件创建后的访问权限,file是管道文件创建后的名称
            例1:创建一个用户本身可读写,其他用户只读的管道文件k2
            mkfifo -m 644 k2;
            3.函数mkfifo创建管道
            #include <sys/types.h>
            #include <sys/stat.h>
            int mkfifo(char *path, mode_t mode);
            mode   取值类似open的第三个参数,并且自带了O_CREAT,O_EXCL选项
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值