20140256806班(22)《嵌入式系统程序设计》第七周学习总结

本文介绍了有名管道(FIFO)和消息队列两种进程间通信方式的特点与使用方法。有名管道能够实现互不相关的进程之间的通信,而消息队列则支持更灵活的数据读取方式。文章还对比了两者及无名管道的区别。

一、管道

1、有名管道的优点

有名管道的出现突破了这种限制,它可以使互不相关的两个进程实现彼此通信。该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作,使用非常方便。

2、有名管道mkfifo函数的语法要点

1149685-20170603162837336-535851555.png

3、有名管道的相关出错信息

1149685-20170603163433633-996784063.png

4、使用实例

1149685-20170603164148368-299721345.png

二、消息队列

1、消息队列的概述

消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这4种操作。其中创建或打开消息队列使用的函数是msgget(),这里创建的消息队列的数量会受到系统消息队列数量的限制;添加消息使用的函数是msgsnd()函数,它把消息添加到已打开的消息队列末尾;读取消息使用的函数是msgrcv(),它把消息从消息队列中取走,与FIFO不同的是,这里可以指定取走某一条消息;最后控制消息队列使用的函数是msgctl(),它可以完成多项功能。

2、函数语法要点

1149685-20170603170810055-976991752.png

1149685-20170603170714196-1657523249.png

1149685-20170603171654696-2093777840.png

3、使用实例

1149685-20170603171940493-897037936.png

三、收获与总结

1、无名管道的使用需要用fork创建两个进程,而FIFO不用;

2、消息队列和FIFO相比可以随便读数据;

3、消息队列里的memset函数可以对定义的内存空间清0,它有三个参数(void *s, int ch, size_t n);将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

4、access函数:int access(const char *filenpath, int mode); filenpath文件或文件夹的路径,当前目录直接使用文件或文件夹名(即使用相对路径),mode是用户权限。

5、strncmp函数:int strncmp ( const char * str1, const char * str2, size_t num );如果两个字符串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。

转载于:https://www.cnblogs.com/MILK12138/p/6937579.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值