2014025678《嵌入式系统程序设计》第七周学习总结
有名管道
有名管道可以将两个互不相关的进程实现彼此的通信,
可以通过路径名来指出,并且在文件系统中是可见的。
读进程
1.若管道是阻塞打开,且FIFO内无数据,则读进程一直堵塞下去,直到有数据写入。
2.不是阻塞打开,不管有没有数据,会立即执行。
写进程
阻塞打开,跟读进程一样,直到有东西写入
2.mkififo()函数
函数原型
int mkfifo( const char *pathname, mode_t mode );
参数:
可以看出这个函数有需要两个参数。
第一个参数在系统中创建一个文件。
第二个参数写FIFO权限。
返回值:
成功返回值为0。
失败返回值为-1。
注意:
对命名管道,除非写入方主动打开管道的读取端,否则读取方是无法打开命名管道的。
Open调用执行后,读取方将被锁住。
接收和发送是要在两个终端中进行的。首先要启动读管道,然后再启动写管道,如果读的时候没有启动,会一直阻塞。
其实在很多程序中都会出现类似的情况,因此为了方便,我们在编写程序时都把常用的头文件加上,或者将常用的头文件和函数编写到一个自定义的头文件中。
警告:隐式声明与内建函数 ‘memset’ 不兼容 Linux Programmer’s Manual MEMSET(3)
NAME
memset - fill memory with a constant byte
SYNOPSIS
#include <string.h>
后来发现不是头文件的问题,而是需打开两个终端
本周学的