当前位置: 首页 > news >正文

服装网站建设课程汉南城乡建设局网站

服装网站建设课程,汉南城乡建设局网站,wordpress分类信息 模板,山东省建设管理局网站1. 什么是FIFO FIFO命名管道,也叫有名管道,来区分管道pipe。管道pipe只能用于有血缘关系的进程间通信,但通过FIFO可以实现不相关的进程之间交换数据。FIFO是Linux基础文件类型中的一种,但是FIFO文件在磁盘上没有数据块&#xff0c…

1. 什么是FIFO
FIFO命名管道,也叫有名管道,来区分管道pipe。管道pipe只能用于有血缘关系的进程间通信,但通过FIFO可以实现不相关的进程之间交换数据。FIFO是Linux基础文件类型中的一种,但是FIFO文件在磁盘上没有数据块,仅仅用来标识内核中的一条通道。各进程可以打开这个文件进行read/write操作,实际上是在读写内核通道,这样就实现了进程间通信。

创建FIFO的方式:

使用命令创建:mkfifo 管道名,可以理解为创建一个管道伪文件。
使用库函数创建:mkfifo()函数,并且一旦使用mkfifo()创建了一个FIFO,就可以使用open来打开它,常见的文件I/O函数都可用于FIFO。如:close、read、write、unlink等。
实际上,创建一个FIFO命名管道的时候,内核会为FIFO(伪)文件开辟一个缓冲区,操作FIFO文件就相当于操作这个缓冲区,以此来实现进程间的通信,这种通信实际上就是文件读写的操作来实现的。(可以把FIFO理解为一个文件,一个进程向该文件写数据,另一个进程从该文件中读书数据,前提是两个进程读写的是同一个FIFO文件才能实现通信)

2.当open一个FIFO时,是否设置非阻塞标志(O_NONBLOCK)的区别:

        若没有执行O_NONBLOCK(默认),只读open要阻塞到某个其他进程为写而打开此FIFO。类似的,只写open要阻塞到其他进程为读而打开它。

        若指定了O_NONBLOCK,则只读open立即返回。而只写open将出错返回-1,如果没有进程已经为读而打开该FIFO,其errno置ENXIO。
 

3.代码:

创建两个进程,一个进程向FIFO数据,一个进程从FIFO数据。

write:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>//       int mkfifo(const char *pathname, mode_t mode);
//   ssize_t write(int fd, const void *buf, size_t count);int main()
{int cnt = 0;char *str = "message from fifo";int fd = open("./ipc-file",O_WRONLY);printf("write open success\n");while(1){write(fd,str,strlen(str));sleep(2);cnt++;if(cnt == 5){break;}}close(fd);return 0;}

read:

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>//       int mkfifo(const char *pathname, mode_t mode);int main()
{int cnt = 0;char buf[30]={0};	if(mkfifo("./ipc-file",0700)==-1 && errno != EEXIST){printf("mkfifo fail");perror("why");}	int fd = open("./ipc-file",O_RDONLY);printf("open success\n");while(1){int nread = read(fd,buf,30);printf("read %d byte from fifo/n,context :%s\n",nread,buf);cnt++;if(cnt == 3){break;}}close(fd);return 0;}

结果:

http://www.yayakq.cn/news/270191/

相关文章:

  • 常州网站建设公司排名百度手机助手网页版
  • 海城做网站公司网推拉新平台
  • 网站建设费属于业务宣传费吗营销平台网站建设
  • 从百万到千万 网站怎么优化没有地址可以注册公司吗?
  • 网站开发招标评分标准泊头网站优化
  • 做那个免费观看视频网站济南建网站工作室
  • 别人做的网站自己根目录吗如何查看一个网站是用什么cms做的
  • 卫浴毛巾架网站建设上海个体工商户如何注册
  • 网站外链软件wordpress网站可以显示中文和英文
  • 做中国旅游网站的目的与必要性软件工程师证
  • 动漫建模代做网站百度一下企业网站开发费用包括哪些
  • 网站建设dyfwzx网络平台推广引流
  • h5手机制作网站开发网页制作素材库哪个网站
  • 怎么用ps做简单网站苏州优秀网站设计企业
  • 企业网站优化公司erp企业管理系统软件开发
  • wordpress 插件站竣工验收报告查询网
  • 网站开发时会遇到哪些问题dw网页设计模板网站
  • wordpress缩略图的质量济南做seo外包
  • 自己网站可以加标志吗wordpress 上下篇 插件
  • 青岛网站建设系统公司起名字大全免费两个字
  • 做学校网站素材图片wordpress分类列表前加图标
  • 旅游网站开发内容云南省新农村建设网站
  • 广州十度网络网站开发最好软件技术专业升本可以升哪些专业
  • 南宁共建站如何做网络营销直播
  • 招商网站建设服务商广州建设银行招聘网站
  • 如何在公众号里做网站给图像做标注的网站
  • 茶叶怎么做网站销售机械制造设备类企业网站织梦模板
  • 个人网站建设知乎网站头部seo范例
  • 网站软文营销网站建设与维护 参考文献
  • 推广赚钱西安百度关键词优化