Linux进程间通信

       最近一直在实现调试Linux进程间通信,主要任务是实现网管和工程代码本地之间的通信。所以就开始了解进程通信实现的方式,总结下来大概有七种:匿名管道、命名管道、消息队列、共享内存、信号量、信号和套接字。各种通信的实现方式以及参考代码网上有很多,这里不再赘述了。

       本文主要介绍一下我实现过程中遇到的一些问题。我用的主要是套接字STREAM方式。使用套接字实现本地通信,需要配置的参数AF_INET(也有AF_LOCAL或AF_UNIX,但我这的工程配置环境好像不支持,会报错),本地回路地址127.0.0.1,端口可设任意没有使用的端口。模型选择的是客户服务器模型,具体如下:

        实现过程按照模型一步步实现,比较简单。但是用在工程代码里面,还是出现了许多问题。重点的几个如下:一、一定要检查是否配置了本地回路127.0.0.1,我这里的工程就没有配置本地回路,结果串口会报错cannot assignment address,结果调试了半天客户端的代码都没有成功,还是在网上查了大量资料才想到配置这个问题;二、逻辑问题,单独实现进程通信很容易,但是加入工程后,需要对整个工程的工作流程和方式熟悉,进程通信过程在工程中是怎样工作的,需要捋顺,如果逻辑不清楚很有可能出现connection refused错误;三、一定要注意在服务器端关闭accept函数返回的描述符,我就是在一个while循环里调用accept函数,结果忘记关闭返回的描述符,通信五分钟后出现open too many files错误,关闭后,就好了。

       好了,今天就分享这么多,希望能对大家有帮助!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值