Linux内核入门(八)——进程间通信:有名管道

Linux内核入门(八)——进程间通信:有名管道

前言

上回书说到,为了实现无亲缘关系进程之间通信,可以使用有名管道, 那么这个有名管道相比无名管道,有什么不同的地方呢?

使用有名管道是会在文件系统中创建一个管道文件的。
无名管道中可没有提到过文件这个东西。
既然有名管道是以文件的方式存在的,那么不同进程之间当然可以通过读写这个文件来实现进程间通讯。

注:Linux下有7种文件类型:

文件类型 创建方法
- 普通文件 open()
d 目录文件 mkdir()
l 链接文件(软链接) ln -s
p 命名管道文件 mkfifo()
s 套接字文件 还没学到
b 块设备文件,二进制文件 还没学到
c 字符设备文件 还没学到

前面几个我们都见过,ls -l命令就可以看到每个文件的类型,其中的 p 就代表我们要说的有名管道文件类型。

有名管道

首先:我们需要创建一个管道文件:

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

该函数就是用来创建一个管道,返回值-1代表创建失败,0代表创建成功;参数:pathname指明创建的管道文件目录和文件名,参数mode指明文件权限,和普通文件创建时一样,我们可以写:0777。
写一个创建管道文件的程序,运行后可以看到我们创建好的管道文件:
在这里插入图片描述
文件名为:npipe
到这里,内核空间此刻还没有有名管道存在,需要等到调用open()函数才会出现。

创建好管道文件后,我们就可以进行进程间通信实验了

进程间通信实验

实现简单的一个功能:进程1工作完成后,向有名管道写一个标志位,通知进程2开始工作。

进程1源码:

#include <stdio.h>
#<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值