免费注册 查看新帖 |

Chinaunix

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

一个服务程序开发过程中遇到的一些问题,请各位大侠给些建议 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-05 21:09 |只看该作者 |倒序浏览
最近在写一个服务程序,主要功能是负责接收,发送一些消息,其中一端有个数不固定的终端,另一端是一个服务.我负责这两端之间的消息的传递,并根据一定策略做相应的操作.两边都是长联接.碰到了如下问题:
  1.我打算将服务做成守护进程,但如何关闭进程?kill吗?那它产生的那些子进程怎么关掉?
  2.我打算让主进程负责监听,每来一个联接生成一个子进程处理该连接.进程间的IPC采用什么方式,我是初学者,不清除几种IPC方式在什么情况下使用更合理.
  3.系统之间规定采用双向握手方式,如何进行定时握手,再生成一个专门负责握手的进程?要是这样的话又要考虑IPC.
  4.多线程倒是不用考虑那么多,但得考虑数据同步和函数的可重入性.我这种情况该使用多线程还是多进程呢?有没有这样的开源服务代码阿.谢谢

   我是初学者,老感觉我的方法比较菜,刚才看了福瑞哈哥的一篇文章,收获颇丰.希望大侠们能给我些指导和建议.谢谢.

论坛徽章:
0
2 [报告]
发表于 2007-06-05 22:00 |只看该作者
1.我打算将服务做成守护进程,但如何关闭进程?kill吗?那它产生的那些子进程怎么关掉?
------------------------------------------------------------------------------------------------------
守护进程你k他干嘛??你把守护都k掉了,你的子进程当然也要k掉,不然留着干什么?

直接杀,可能存在一个数据恢复保存,进程退出记录的问题,比如共享内存中的数据写入数据库等等,具体情况了


  2.我打算让主进程负责监听,每来一个联接生成一个子进程处理该连接.进程间的IPC采用什么方式,我是初学者,不清除几种IPC方式在什么情况下使用更合理.
------------------------------------------------------------------

比如 传递消息用FIFO吧,操作共享数据用MMap ,UNIX网络编程上有详细的例子

  3.系统之间规定采用双向握手方式,如何进行定时握手,再生成一个专门负责握手的进程?要是这样的话又要考虑IPC.

---------------------------------------------------------------------------------------------------

握手?心跳消息吗?这个应该只是两个连接点之间的事情


  4.多线程倒是不用考虑那么多,但得考虑数据同步和函数的可重入性.我这种情况该使用多线程还是多进程呢?有没有这样的开源服务代码阿.谢谢

-----------------------------------------------------------------------------------------------------------

线程,进程示具体情况而定,多进程操作共享数据也得考虑同步问题啊,

论坛徽章:
0
3 [报告]
发表于 2007-06-05 23:47 |只看该作者
第2个问题应该不会涉及到IPC,因为是在接收到连接也就是accept之后fork进程进行处理的,子进程会共享父进程已经接收过来的文件描述符。

论坛徽章:
0
4 [报告]
发表于 2007-06-06 08:59 |只看该作者

回复 2楼 unixpm 的帖子

请问,
1.如果我想升级我的服务,或者重起服务,那怎么办?难道kill掉每一个进程?主进程和若干个子进程?一个一个kill?
3.关于心跳消息,我还是不明白,因为我有多个连接,发送心跳消息是每个子进程再生成一个负责发心跳消息的线程呢?还是由父进程生成一个负责发心跳消息的进程?

论坛徽章:
0
5 [报告]
发表于 2007-06-06 09:00 |只看该作者
原帖由 converse 于 2007-6-5 23:47 发表
第2个问题应该不会涉及到IPC,因为是在接收到连接也就是accept之后fork进程进行处理的,子进程会共享父进程已经接收过来的文件描述符。


版主给问题3提供一个解决方法?谢谢

论坛徽章:
0
6 [报告]
发表于 2007-06-06 09:08 |只看该作者
问题 3 的实质是代码抽象程度的调配。

论坛徽章:
0
7 [报告]
发表于 2007-06-06 09:34 |只看该作者
原帖由 langue 于 2007-6-6 09:08 发表
问题 3 的实质是代码抽象程度的调配。



能否说详细点.谢谢.我不是很明白

论坛徽章:
0
8 [报告]
发表于 2007-06-06 11:08 |只看该作者
大家帮忙

论坛徽章:
0
9 [报告]
发表于 2007-06-06 11:14 |只看该作者
原帖由 hwz_119 于 2007-6-6 08:59 发表
请问,
1.如果我想升级我的服务,或者重起服务,那怎么办?难道kill掉每一个进程?主进程和若干个子进程?一个一个kill?

写个控制脚本

论坛徽章:
0
10 [报告]
发表于 2007-06-06 14:28 |只看该作者
看了几篇文章,都推荐使用poll+多线程的模式,是这样吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP