首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

unix爷儿俩进程和socket通信

2013-06-26 
unix父子进程和socket通信server-accept client-socket,connect连接上服务器--fork() ,子进程拷贝父进

unix父子进程和socket通信
server->accept 

client->socket,connect  连接上服务器
    -->fork() ,子进程拷贝父进程的socket
       --->父进程 socket  与server通信,具有检查服务器是否正常的功能,发送心跳包
       --->子进程 socket  与server通信,完成正常的交易
模型大概就是这样的,在下愚拙,可能不好理解,还望见谅!
问题:
    1.server断开后重启,父进程检测到服务器故障,然后重连,但是连上后父进程可以使用,但是子进程就不能使用了...?这个需要什么技术来解决(我想的是共享内存来传递这个socket,但是我觉得这样做麻烦了),望各位大侠给我建议。
    2.发送心跳包采用alarm信号机制,但是该信号会造成recv接受失败,所以我采用的方法是设置SIGPIPE信号的处理方式为忽略。
以上是我的两个问题,希望各位前辈多多指教,在下跪求好技术!!! tcp 长连接 socket unix 信号
[解决办法]
问题1:进程间资源都是独立的,你即使传socket过去子进程他也用不了了。得自己连接了,我建议一开始也应该自己连接。不要使用父进程的连接。
问题2:SIGPIPE这个信号肯定要忽略的,如果你不想堵塞recv的话,我觉得你可以使用非堵塞方式读写。
[解决办法]

引用:
Quote: 引用:

问题1:进程间资源都是独立的,你即使传socket过去子进程他也用不了了。得自己连接了,我建议一开始也应该自己连接。不要使用父进程的连接。
问题2:SIGPIPE这个信号肯定要忽略的,如果你不想堵塞recv的话,我觉得你可以使用非堵塞方式读写。
有没有写过unix的c长连接,这个要两个socket来实现吗

和长连接有个毛关系。

热点排行