`
tubaluer
  • 浏览: 1443465 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

Linux进程间通信(简单的消息队列通信)

 
阅读更多

前几天在计算机操作系统课中学习了Linux下进程通信,今日做了个消息队列通信的简单小程序,权当练习。

程序有服务器和客户端两个进程。先运行服务器,然后客户端。客户端向服务器发送问题,服务器收到后可进行回复。

服务器运行时先判断要创建的消息队列是否存在,若已经存在,则退出。不存在,进入循环。(此为关键。若队列存在仍继续操作,则将二者都收不到消息。(不知为何哈!求高人解释。最早就是再此出耽误了很多时间,还以为是自己程序的毛病呢。))

msgrcv最后个参数设置为0,意思为若当前队列中无消息,则阻塞。等待消息进入队列后接受(即等待客户端启动发送消息) 。然后客户端,服务器无限循环进行问答。若想退出,按ctrl+c。

用到的主要函数:msgget() 创建消息队列 msgrcv()接受消息 msgsnd()发送消息 msgctl()操纵一个消息 fgets()键盘接受字符串,放入message.buffer。详细内容可使用man msgget ....等命令查找。

程序源码如下:

serve.c:

client.c:

运行结果如下:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics