命名管道创建及读写|学习笔记

简介: 快速学习命名管道创建及读写

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频命名管道创建及读写】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11036



命名管道创建及读写

 

内容介绍:

一、创建命名管道

二、操作 FIFO 文件时的特点

 

一、创建命名管道

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

pathname 为路径,mode 为权限,成功返回0,失败返回非0

 

二、操作 FIFO 文件时的特点

系统调用的I/O函数都可以作用于FIFO,如open,close,read,write等。

打开FIFO时,非阻塞标志(O_NONBLOCK)产生下列影响(未指定则默认为阻塞方式打开)

特点一:

不指定 O_NONBLOCK(即 open 没有位或 O_NONBLOCK)

1、open 以只读方式打开 FIFO 时,要阻塞到某个进程为写而打开此 FIFO

2、open 以只写方式打开 FIFO 时,要阻塞到某个进程为读而打开此 FIFO。

例如:04_fifo_read_1.c 验证阻塞方式,open 的阻塞效果

#include<stdio.h>

#include <unistd.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcnt1.h>

int main(int argc, char *argv[])

{

int fd;

mkfifo("fifo",0777);

fd=open("./fifo",O WRONLY);

if(fd<o){

perror("open");

return 0;

}

printf("open write only sucess\n");

Printf(buf=%s\n)

close(fd);

return 0;

}

以上是以只读的方式打开,执行write之后,默认以阻塞的方式打开,

以只读的方式打开open,否则open会阻塞,等待对方以另外一种方式打开。

Read阻塞会等待以对方以写的方式打开。

#include<stdio.h>

#include <unistd.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcnt1.h>

#include<string.h>

int main(int argc, char *argv[])

{

int fd;

Char buf[101】;

mkfifo("fifo",0777);

fd=open("./fifo",O WRONLY);

if(fd<o){

perror("open");

return 0;

}

printf("open write only sucess\n");

memset(but,0,sizeof(buf));

read(fd,buf,100);

printf(buf=%s\n,buf);

close(fd);

return 0;

}

以上通过命名管道实现了进程加速线,以p开头的文件说明是为管道

文件。

相关文章
|
存储 设计模式 Dart
Flutter笔记:getX库中的GetView中间件
Flutter笔记:getX库中的GetView中间件
567 0
|
存储 数据库 开发者
Flask中的蓝图与插件应用:构建模块化Web应用的利器
【7月更文挑战第19天】Flask蓝图和插件是构建模块化、可扩展和可维护Web应用的强大工具。蓝图允许你将应用分割成多个独立的部分,提高了代码的组织性和可重用性;而插件则为Flask应用提供了丰富的功能和社区支持,简化了开发过程。通过合理地使用蓝图和插件,你可以更加高效地开发出高质量的Web应用。
|
6月前
|
监控 测试技术
【YashanDB知识库】YCM上CPU负载超过实际核数是怎么回事
【YashanDB知识库】YCM上CPU负载超过实际核数是怎么回事
在Linux中,如何使用tar命令归档文件?
在Linux中,如何使用tar命令归档文件?
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的旅游信息管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的旅游信息管理系统附带文章源码部署视频讲解等
132 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的武汉君耐营销策划有限公司员工信息管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的武汉君耐营销策划有限公司员工信息管理系统附带文章源码部署视频讲解等
88 0
|
算法 架构师 Java
肝了三天三夜整理出这份36万字全网最牛的开源高并发编程PDF!!
在 冰河技术 微信公众号中的【高并发】专题,更新了不少文章,有些读者反馈说,在公众号中刷历史文章不太方便,有时会忘记自己看到哪一篇了,当打开一篇文章时,似乎之前已经看过了,但就是不知道具体该看哪一篇了。相信很多小伙伴都会有这样的问题。那怎么办呢?最好的解决方案就是我把这些文章整理成PDF电子书,免费分享给大家,这样,小伙伴们看起来就方便多了。今天,我就将 冰河技术 微信公众号【高并发】专题中的文章,整理成《深入理解高并发编程(第1版)》 分享给大家,希望这本电子书能够给大家带来实质性的帮助。后续,我也会持续在 冰河技术 微信公众号中更新【高并发】专题,如果这本电子书能够给你带来帮助,请关注 冰
755 0
肝了三天三夜整理出这份36万字全网最牛的开源高并发编程PDF!!
|
存储 安全 Java
基础一:一切都是对象
基础一:一切都是对象
206 0