进程通信-管道通信与消息队列
基于第一篇 进程与线程的创建和使用
系统:Linux Ubuntu 编译器:gcc
过程思路:
管道通信:
1.在main()函数中创建子进程p1,p2和管道。
2.子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向消息队列写入一条消息“ok”。
3.子进程p2从消息队列读取消息,如果收到消息“ok”,则打开文件,读取文件内容,并将其输出道屏幕上,关闭文件。
消息队列:
1.创建结构体typedef struct mymsg,写好消息发送函数sendmsg(int msqid, mymsg msg)、创建管道函数int getqid()、写入文件函数writetofile()、读取文件函数readfromfile()
2.在main()函数中创建子进程p1,p2和管道。
3. 进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向消息队列写入一条消息“ok”;子进程p2从消息队列读取消息,如果收到消息“ok”,则打开文件,读取文件内容,并将其输出道屏幕上,关闭文件。
图示:
管道:
消息队列:
遇到的问题:
1.接收消息函数参数传输错误,不能接收到消息。
这种情况下检查.txt文件,分析是哪里出错,再调整代码(时间太久也不记得自己当时是哪里写错了,不过应该是小问题,逻辑你没有出错都没有什么大问