免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1507 | 回复: 1
打印 上一主题 下一主题

[C] 请教linux下进程间通信的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-17 14:19 |只看该作者 |倒序浏览
大家好,哪位朋友能帮忙解决一下下面的问题,不胜感激.如果在北京的话,请客,付费都可以。

问题描述
现状:
有一个发信进程(服务)A,不停的从队列中获得消息,每次获得一个消息(在这里就是一封邮件),就调用程序B(通过函数execvp(*args,args)调用)把消息发给远端的服务器,相当于每次都启动一个新的进程,程序B通过匿名管道把发信结果返回给发信进程A。

需求:
目前程序B接受到消息后无条件的向远程发送,需要修改成对消息(邮件地址)进行判断,单位时间内发送同一个邮件域的消息需要有一个限制,如果超过这个限制,就要等待。

修改方案:
1.        通过共享内存实现:首先在进程A中开辟一块共享内存,用来保存每个邮件域的发送情况(一分钟内发送的情况),程序B在发送之前,先去获得共享内存中的数据,查看是否超过了限制,如果超过,等待;如果没有超过,那么更新共享内存中的数据,然后向远程发信。
2.        通过匿名管道实现:起一个新的服务,用来维护每个邮件域的发送情况,然后程序B的每一个新进程通过匿名管道去查看是否能够发送。

请问修改方案1或者2是否可行?是否可以帮忙写一下,或有类似的例子参考。

联系:
msn:zhiyuanyin(@)hotmail.com
email:yinzhiyuan(@)gmail.com

论坛徽章:
0
2 [报告]
发表于 2009-06-18 14:32 |只看该作者
怎么这个问题没人回答?


A是fork+exec调用B吧
只有一个A和一个B进程,还是一个A对多个B进程?

解决办法很简单,能不能发送由A来判断和控制,如果不能发A就先记着,到了能发送的时候就把信发给B,B只管发信就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP