2014025691《嵌入式系统程序设计》第七周学习总结

第七周嵌入式课程学习,通过课上的学习以及在实验楼上面的复习,我有如下的心得体会:
①关于管道
本周学习的新内容,出了学习到了管道的基础知识以及基本语法和参数,本次实验是本学期第一次启用双进程同时运行
由于管道的特殊性,无法在单一进程里进行读写,只能在一个进程里写,另外一个进程里读。
关于管道我们还学习了有名管道和无名管道
管道参数mkfifo()函数格式
O_RDONLY:读管道
O_WRONLY:写管道
O_RDWR:读写管道
O_NONBLOCK:非阻塞 等一系列传入值与返回值。
首先启动读管道程序。 读管道进程在建立管道之后就开始循环地从管道里读出内容,如果没有数据可读,则一直阻塞到写管道进 程向管道写入数据。在启动了写管道程序后,读进程能够从管道里读出用户的输入内容。
以上是关于本周管道的学习。
②关于消息队列的应用
消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这4种基本操作操作。
其中创建或打开消息队列使用的函数是msgget() 添加消息使用的函数是msgsnd()函数,读取消息使用的函数是msgrcv(),后控制消息队列使用的函数是msgctl()。
我们主要学习了msgsnd和msgrcv的功能并付诸于实践。
通过基本的实验与实践我们得到以下的结论:
msgsnd的传入值:
msgp:指向消息结构的指针。
该消息结构 msgbuf 通常为: struct msgbuf { long mtype;
/* 消息类型,该结构必须从这个域开始 */
char mtext[1];
msgsz:消息正文的字节数(不包括消息类型指针变量)
返回值为-1和0
msgrcv的传入值:
msqid:消息队列的队列 ID
msgp:消息缓冲区, 同于 msgsnd()函数的
msgp msgsz:消息正文的字节数
msgtyp:
0:接收消息队列中第一个消息
大于 0:接收消息队列中第一个类型为 msgtyp 的消息
小于 0:接收消息队列中第一个类型值不小于 msgtyp 绝对值 且类型值又小的消息
返回值为成功时为0失败时为-1.
以上为本周学习的新的体会以及基本内容,希望对同学们有所帮助。

posted @ 2017-06-05 21:58  zxy531  阅读(151)  评论(0编辑  收藏  举报