社区
Linux/Unix社区
帖子详情
多个父子进程都写同一个socket会不会有问题?
ashamwolf
2005-09-14 02:58:23
父进程建立一个socket连接,然后循环读取数据,收到数据之后产生一个子进程来处理数据,然后继续接收数据。子进程处理完数据之后要向socket写回复消息,如果多个子进程同时写数据会有什么问题?
...全文
578
17
打赏
收藏
多个父子进程都写同一个socket会不会有问题?
父进程建立一个socket连接,然后循环读取数据,收到数据之后产生一个子进程来处理数据,然后继续接收数据。子进程处理完数据之后要向socket写回复消息,如果多个子进程同时写数据会有什么问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tukey
2005-09-18
打赏
举报
回复
up
immc1979
2005-09-18
打赏
举报
回复
在子进程写的时候,创建一个临界区,一次只允许一个在写,写完以后释放
------------------------
应该这样,不然会出现混乱,毕竟是一个SOCKET套接字,属于临界资源,要是出现双方同时在read就死锁了
alaiyeshi
2005-09-16
打赏
举报
回复
在子进程写的时候,创建一个临界区,一次只允许一个在写,写完以后释放
ashamwolf
2005-09-15
打赏
举报
回复
好像有个地方没说清楚,我的程序不是做服务器,而是客户端。主进程发起连接,每次收到数据后创建一个子进程来处理数据。
hundlom
2005-09-15
打赏
举报
回复
这是server 中经典的设计模式。没有问题
多个子进程同时写,但写的是不同的id。没问题。
wind123
2005-09-15
打赏
举报
回复
没有问题的,需要注意的应该是数据的顺序要求
yyy790601
2005-09-15
打赏
举报
回复
tcp协议能保证的。
ashamwolf
2005-09-15
打赏
举报
回复
如果每个进程只调用一次write可能不会有问题,但是现在是在循环里面调用了多次,所以不知道会有什么后果。
bugebear3
2005-09-15
打赏
举报
回复
感觉上有点问题
ashamwolf
2005-09-15
打赏
举报
回复
下面的情况会不会有问题:
假如有两个子进程都要向socket写东西,第一个子进程要执行3次write函数才能将一个回复消息写完,并且在执行第2次write之后该进程时间片用完,轮到下一个子进程执行,那么在对方收到的数据中,第一个子进程返回的数据里面会不会混有第二个子进程写入的数据?
sharkhuang
2005-09-15
打赏
举报
回复
没问题 进程复制文件句柄
ashamwolf
2005-09-14
打赏
举报
回复
具体情况是这样的:
每个子进程在处理完数据之后会向socket写回一串字符,只写一串,字符数不会超过1024,在程序里就是一个循环,在循环里调用write直到把整个字符串写完。
每个子进程回复的顺序没有要求,只要各个子进程发送的字符串能原样到达就行了,也就是几个子进程回复的字符串不要混在一起。不知道操作系统能不能保证这一点。
gaoxianfeng
2005-09-14
打赏
举报
回复
这就相当于你多个进程打开一个文件 读写
nahuat
2005-09-14
打赏
举报
回复
物理上不会有问题,数据都将被正确传送
逻辑上有问题,收发会乱序,除非你有机制确保在某个时间点上由谁来收发,同时进行是不行的
yyy790601
2005-09-14
打赏
举报
回复
如果在子进程产生前创建的socket,子进程就可以用这个socket。
至于多个socket连接道一个端口的问题。那是传输层协议处理的事情,我们只负责应用层的合理设计就够了。就象一个ftp服务器,大家都连接的是它的21端口,具体怎么处理它自己知道。
ashamwolf
2005-09-14
打赏
举报
回复
产生子进程的时候,每个子进程都会复制一个socket的相关资源吗?比如读和写的缓冲区。如果这样不是多个socket都连接到对方的一个端口上了?
yyy790601
2005-09-14
打赏
举报
回复
没任何问题。
进程间完全可以传递并使用文件描述符。
socket
编程中
父
子进程
、兄弟进程的端口
问题
最近在linux下弄一些
socket
方面的东西,涉及到
父
子进程
、兄弟进程间的端口、
socket
句柄的
问题
,主要
问题
集中在两个方面: 1、假如
父
进程监听A端口,那么在client端来连接,并fork
子进程
,那么
子进程
通过那个端口与client交换数据呢? 通过实验显示,还是端口A。为什么?端口复用技术!那么,实验是怎么做的呢?其实很简单,server端启动,在fork出
子进程
时保证每个子
linux下
父
子进程
共享
socket
,多进程服务端实现-共享
socket
#include#include#include#include#defineMUTEX_NAME"sschild"intmain(intargc,char*argv[]){{//initWORDwVersionRequested;WSADATAwsaData;wVersionRequested=MAKEWORD(2,2);WSAStartup(wVersionRequested,&...
socket
多进程
socket
多进程
多进程同时
写
一个文件
会
怎样?(待修订)
一、
问题
还原在多进程的环境下,
父
子进程
同时去
写
一个文件,例如
父
进程每次
写
入aaaaa,
子进程
每次
写
入bbbbb,
问题
是
会
不
会
出现
写
操作被打断的现象,比如出现aabbbaaabb这样交替的情况?二、结论 1:使用write系统调用的情况下,
不
会
出现内容交叉的情况。 2:使用fwriteANSIC标准C语言函数,
会
出现内容交叉的情况。 三、实验过程实验环境:操作系统: RedHat Linu
linux下
父
子进程
共享
socket
,多进程共享
socket
(Linux,Win32)
您可以共享一两个(或
多个
插座)在Linux进程和甚至是Windows。在Linux(或POSIX类型的操作系统),用fork()将导致叉孩子有
父
母的所有的文件描述符的副本。 就算是没有关闭将继续共享,(与一个TCP监听套接字的例子)可用于接受()为客户提供新的插座。 这就是有多少台服务器,包括Apache在大多数情况下,工作。在Windows上同样的事情基本属实,但没有fork()系统调用,使
父
进...
Linux/Unix社区
23,118
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章