Linux创建FIFO文件类型的方法

FIFO管道是一种文件类型,在Linux上创建FIFO非常容易,FIFO文件固有管道的特性,但和pipe管道有一定的区别,下面小编将针对FIFO管道的创建和使用做个详细介绍,以便你有个详细的了解。



FIFO,又称作命名管道(named pipe),它是Linux系统中用于进程间通信的一种方法。

FIFO和pipe的区别在于:

FIFO在文件系统中有对应的inode,可以通过ls命令查看。

sh-3.2# ls -lhF 。/fifo_file

100 prwxrwxrwx 1 root root 0 Jan 1 1970 。/fifo_file|

sh-3.2#

正因为它有一个名字,所以任何进程都可以访问它,所以FIFO可用于任意两个进程之间的通信。

pipe没有名字,在现有文件系统中无法查看到它的存在。

它只能用于父子进程、兄弟进程等具有血缘关系的进程间通信。

创建FIFO的方法如下:

1. 调用umask系统调用来设定创建文件的权限,

#include 《sys/types.h》

#include 《sys/stat/h》

mode_t umask(mode_t mask);

2. 调用unlink系统调用先删除已经存在的fifo,

#include 《unistd.h》

int unlink(const char *pathname);

3. 调用mkfifo库函数去创建一个FIFO文件,

#include 《sys/types.h》

#include 《sys/stat.h》

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

或者可以通过调用mknod系统调用并且指定参数mode为S_IFIFO也可以创建一个FIFO文件,

#include 《sys/types.h》

#include 《sys/stat.h》

#include 《fcntl.h》

#include 《unistd.h》

int mknod(const char *pathname, mode_t mode, dev_t dev);

注意:

1. 使用FIFO进行通信,每次传输的数据要限定在PIPE_BUF之内;

2. 对于FIFO的访问就像访问正规文件(regular file)一样,可以使用open/read/write/close等系统调用进行访问。

使用FIFO的应用有:

1. 单纯的生产者/消费者问题,一个进程读数据,一个进程写数据;

2. 实现client/server架构的程序,客户端和服务器端通过FIFO进行通信。

上面就是Linux创建FIFO管道的方法介绍了,本文除了介绍了FIFO管道的创建外,还稍微介绍了下FIFO的使用及其注意事项,在使用的时候需特别注意。

分类:linux
时间:2015-02-28

Linux创建FIFO文件类型的方法的相关文章

如何查看Linux系统的文件类型

在使用和维护Linux操作系统时,我们首先需要知道系统的文件类型。windows系统常用的文件系统类型是FAT32、NTFS,而Linux系统常用的文件类型是ext2、ext3和ext4等。下面小编就以CentOS6.4系统为例演示如何查看文件系统类型。

LINUX中,查看文件内容的方法及分页显示的办法

LINUX中查看文件内容的指令很多,下面分别介绍一下: cat file1 [file2] -- cat的本来的意思是连接,就把所有文件的内容全部显示在一起,纵向排列 paste file1 [file2] -- 与cat的用法一致,但是是把所有文件的内容横向的连接在一起 tail -n file1 表示显示文件的最后n行,如果不加默认是最后10行 head -n file1 表示显示文件的最前面n生,如果不加默认是最开始10行 less,more 是分页查看文件 当然也可以把这些指令组合起来使

Linux中使用file命令识别文件类型默认没有扩展名

在Linux系统操作过程中,没有扩展名的文件难以识别,我们可以使用命令来识别文件类型,下面小编就给大家介绍下如何使用file命令来识别文件类型。 我们知道Linux文件系统是Linux内核支持的基本功能之一,并由根 / 开始往下形成倒立树状的级连式结构。文件与目录是Linux文件系统的两个基本元素,(广义的)文件分为普通文件、目录文件、连接文件和特殊文件。可以通过file命令来识别各种不同的文件类型。 linux对于文件的扩展名没有像windows要求的那么严格,所以在使用linux

Mac OS X中创建新文件夹的几种方法

在日常的生活工作中,我们经常需要创建新的文件夹,这些文件夹可以帮助我们更好的管理我们的文件和电脑。因此创建新文件夹也是每个用户都会的事,在最新的MAC OS X系统中,我们可以通过几种方法创建新文件夹呢? Mac OS X 创建新文件夹的方法: 1. 从「档案」(File)选单中选取「新建文件夹」(New Folder)。 2. 同时按下 Command + Shift + N。 3. 从「显示方式」选单中选取「自定工具列…」(Customize Toolbar),然后将「新

Linux创建用户步骤

在Linux系统中,我们常常需要创建用户,将程序及应用部署到该用户下面。Linux不同用户的权限不一样,root用户拥有最高权限,可以访问任何目录。本文介绍了Linux创建用户的过程。

如何调整照片大小KB,尺寸及文件类型?

很多时候我们都需要缩小图片的尺寸,大小,修改文件类型。特别是用于网络报名,或者网络图片等用途时。今天笔者分享两种修改文件尺寸,大小,及文件类型的方法。一种即用得比较普遍的QQ截图,这个适合要求不高的朋友。另一个是使用PS进行修改,适合要求稍高的朋友。

linux 新手教程之创建锁文件的方法

一、概述 Linux提供了多种特性来实现文件锁定。其中最简单的方法就是以原子操作的方式创建锁文件,所谓“原子操作”就是在创建锁文件时,系统将不允许任何其它的事情发生。这就给程序提供了一种确保它所创建的文件是唯一性的方式,且该文件不可能被其它程序在同一时刻创建。 二、方法 锁文件仅仅是充当一个指示器的角色,程序间需要通过相互协作来使用它们。锁文件只是建议性锁,与此对立的是强制性锁。 为创建一个用作指示器的文件,我们使用带O_CREATE和O_EXCL标志的open系统调用。这将使我们以一个原子操作

ubuntu(linux)命令行模式创建复制文件的方法

ubuntu是一个非常好用的系统,是很多编程爱好者的首选,但是纯命令行模式的系统对于初学者来说是比较难的,下面小编就根据自己亲身实践来教大家如何在命令行模式下如何创建以及复制文件。

Linux系统中的文件类型及文件扩展名详解

Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)。 一. 文件类型 Linux文件类型常见的有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等,现在我们进行一个简要的说明。 1. 普通文件 我们用 ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意的是