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

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

开发者学堂课程【物联网开发- 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开头的文件说明是为管道

文件。

相关文章
|
4月前
|
人工智能 BI
文件的读写
文件的读写。
36 0
|
4月前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
9月前
|
消息中间件 Unix Linux
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)1
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)
390 0
|
9月前
|
存储 消息中间件 监控
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)2
【Linux学习】进程间通信的方式(匿名管道、命名管道、共享内存)
62 0
|
Java Linux PHP
【Linux】基础IO——文件操作|文件描述符|重定向|缓冲区
Linux下的文件操作、C语言下的文件操作、文件描述符、重定向的原理和缓冲区的理解。
|
物联网 Linux 开发者
无名管道读写特点|学习笔记
快速学习无名管道读写特点
298 0
无名管道读写特点|学习笔记
|
JavaScript 物联网 Linux
非阻塞方式打开命名管道|学习笔记
快速学习非阻塞方式打开命名管道
262 0
非阻塞方式打开命名管道|学习笔记
|
物联网 Linux 开发者
无名管道的创建|学习笔记
快速学习无名管道的创建
144 0
无名管道的创建|学习笔记
|
测试技术
[20180316]异步IO和共享服务模式.txt
[20180316]异步IO和共享服务模式.txt --//在共享服务器模式下,不会使用异步IO,通过例子证明. 1.环境: SYS@book> @ &r/ver1 PORT_STRING          VERSION    BANNER --...
1069 0