4 有名管道1

1. 无名管道只能在有亲缘关系的进程中进行通信,针对这一缺点进行改进,出现有名管道。

  有名,即文件系统中存在对应文件节点,每个文件节点都有一个inode号。

有名管道的文件类型是p,之前文件IO中认识的文件类型有:普通文件-,目录文件d,链接文件l。


2. 创建方式:

open: 普通文件

mkfifo: 创建管道

socket:创建套接字

mknod:字符设备文件

mkdir: 目录文件

链接文件:ln -s


3. mkfifo使用方法与open类似,有名管道创建完后,在当前目录中生成文件。

这个文件不占用磁盘空间,只有innode号,和套接字、字符设备文件、块设备文件一样。普通文件,符号链接文件及目录文件不仅有inode号,还占用磁盘空间。


4. 实例,创建有名管道

#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
int main()
{
  int ret;
  ret=mkfifo("./myfifo",0777);
  if(ret <0)
  { 
	printf("creat myfifo failure\n");
	return -1;
  }
  printf("creat myfifo sucess\n");

  return 0;
}

执行结果:

alex@alex-virtual-machine:/extra/process/004$ ls
mkfifo.c
alex@alex-virtual-machine:/extra/process/004$ gcc mkfifo.c
alex@alex-virtual-machine:/extra/process/004$ ls
a.out  mkfifo.c
alex@alex-virtual-machine:/extra/process/004$ ./a.out
creat myfifo sucess
alex@alex-virtual-machine:/extra/process/004$ ls
a.out  mkfifo.c  myfifo
alex@alex-virtual-machine:/extra/process/004$ ls -lh
total 12K
-rwxrwxr-x 1 alex    alex    7.2K  1月 21 13:44 a.out
-rwxrwxrwx 1 smbuser smbuser  233  9月 15  2015 mkfifo.c
prwxrwxr-x 1 alex    alex       0  1月 21 13:44 myfifo
alex@alex-virtual-machine:/extra/process/004$

从执行结果可以看出,生成了myfifo管道文件,文件大小0.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值