2014025631 《嵌入式程序设计》第7周学习总结

本周学习概要:
本周我们学习了有名管道和消息队列的传输和接收,并且在课上和课下实验楼中进行了程序的验证和操作。
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
FIFO的打开规则:
如果当前打开操作时为读而打开FIFO时,若已经有相应进程为写而打开该FIFO,则当前打开操作将成功返回;否则,可能阻塞到有相应进程为写而打开该FIFO(当前打开操作设置了阻塞标志);或者,成功返回(当前打开操作没有设置阻塞标志)。
如果当前打开操作时为写而打开FIFO时,如果已经有相应进程为读而打开该FIFO,则当前打开操作将成功返回;否则,可能阻塞直到有相应进程为读而打开该FIFO(当前打开操作设置了阻塞标志);或者,返回ENIO错误(当期打开操作没有设置阻塞标志)。
消息队列:用于消息,不是简单的数据信息传递,消息队列还包括消息有优先级、消息到达通知等丰富内容。

有名管道:
管道没有名字,它的通信只限定于亲缘关系间的通信,有名管道实现了无亲缘关系间的通信,原理是fifo提供了一个路径名与之关联,让fifo的文件存于系统中,只要知道该文件路径,就可以进行访问。fifo指代(fist in, fist out),即按照先进先出的工作。
fifo创建
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char * pathname, mode_t mode);
参数:
pathname 为路径名,创建管道的名字
mode 为创建fifo的权限
mkfifo()函数格式
所需头文件 #include <sys/types.h> ;#include <sys/state.h>
函数原型  int mkfifo(const char *filename,mode_t mode)
函数传入值 filename:要创建的管道
函数传入值 mode:
         O_RDONLY:读管道
         O_WRONLY:写管道
         O_RDWR:读写管道
         O_NONBLOCK:非阻塞
函数传入值 mode:
         O_CREAT:如果该文件不存在,那么就创建一个新的文件,并用第 三个参数为其设置权限
         O_EXCL:如果使用 O_CREAT 时文件存在,那么可返回错误消息。 这一参数可测试文件是否存在
函数返回值 成功:0 出错:1
感言:
学习时间有点长,最近任务繁重,学习过的知识有点忘记了,果然学习还是要勤学苦练,学习过程中承蒙宋主席的帮助,作业进行的非常顺利,非常感谢这几位互相帮助的同学,无私奉献的精神真的让人难忘。希望在未来,可以将学习的到的知识运用到实践中去吧,同时也感谢老师的教诲!本学习我学到了很多,同时也给我的未来找到了些许自信,老师辛苦了,授教之恩,没齿难忘!

posted @ 2017-06-13 19:10  2014025631syg  阅读(181)  评论(0编辑  收藏  举报