FIFO管道的创建FIFO

 我来答
声悠逸0Kg1b9
2016-05-31
知道答主
回答量:64
采纳率:0%
帮助的人:11.4万
展开全部

创建一个FIFO文件类似于创建文件,FIFO文件就像普通文件一样,也是可以经过路径名来访问的。相应文件stat结构的域st_mode的编码指明了文件是否是FIFO类型。FIFO管道通过函数mkfifo创建,函数原型如下:
#include <sys/stat.h>
#include <sys/types.h>
int mkfifo( const char * filename, mode_t mode );
mkfifo函数中参数mode指定FIFO的读写权限,新创建FIFO的用户ID和组ID规则域open函数相同。参数filename指定新创建FIFO的文件名称。函数如果成功返回0,出 错返回–1,并更改errno的值。errno有可能出现的值为:EACCESS、EEXIST、ENAMETOO- LONG、ENOENT、ENOSPE、ENOTDIR和EROFS。
下面实例演示了如何使用mkfifo函数来创建一个FIFO。程序中从程序的命令行参数中得到一个文件名,然后使用mkfifo函数创建FIFO文件。新创建的FIFO只具有读写权限。由于FIFO文件的特性,所以它被隐性地规定不具有执行权限。
程序清单14-5 create_fifo.c 使用mkfifo函数创建FIFO管道
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[] )
{
mode_t mode = 0666; /*新创建的FIFO模式*/
if ( argc != 2 ){
/*向用户提示程序使用帮助*/
printf(USEMSG: create_fifo {fifoname}\n);
exit (1);
}
/* 使用mkfifo函数创建一个FIFO管道*/
if ( ( mkfifo (argv[1], mode )) < 0) {
perror ( failed to mkfifo );
exit ( 1 );
}
else
printf (you successfully create a FIFO name is : %s\n, argv[1]);
/* 输出FIFO文件的名称 */
exit (0);
}
(2)在shell中编译该程序如下:
$gcc create_fifo.c–o create_fifo
(3)在shell中运行该程序如下:
$./ create_fifo
USEMSG: create_fifo {fifoname}
输入正确的命令符。
$./ create_fifo fifo1
you successfully create a FIFO name is :fifo1
$./ create_fifo fifo1
mkfifo: File exists
上述程序使用mkfifo函数创建一个FIFO,名字是基于用户的输入文件名,可以看到当要创建一个已经存在的FIFO时,程序会产生一个EEXIST的异常,相对应该异常,perror函数打印了相应的帮助信息为mkfifo: File exists。

昆山淼挺
2024-10-28 广告
UPVC排污管是我们昆山淼挺管业有限公司的主打产品之一。该产品采用高品质聚氯乙烯材料制成,具有耐腐蚀、耐磨损、抗压强度高、使用寿命长等优点。UPVC排污管广泛应用于建筑排水系统,如室内排水管道、污水处理系统等。我们公司拥有先进的生产设备和检... 点击进入详情页
本回答由昆山淼挺提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式