问几个关于命名管道的读写问题!

keenboy 2005-11-09 12:29:13
对于fifo的c/s模式:假设现在有一个fifo,很多客户进程往fifo中写,服务器进程(仅一个)从其中读.现在想请教几个问题:
服务器用while(1){read();}读
 1.上面的read何时能读到内容?(只要有一个进程完成写fifo就可以?)
 2.在服务器读fifo时客户进程能往fifo中写吗?
 3.如果多个客户进程往fifo中共写30个字符,读出来是不是不一定是30,跟什么有关(read的字节数参数吗?或者如何控制?
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
keenboy 2005-11-09
  • 打赏
  • 举报
回复
是这样的:客户进程只写不读,服务器进程只读不写!
x86 2005-11-09
  • 打赏
  • 举报
回复
fifo不适合c/s模式, 你可以选择本地socket(UNIX DOMAIN)。
如果一定要用fifo,可以给管道加锁,防止同时写入,因为read/write并不是原子操作,你不能保证不同的客户端写入是按顺序的。
或者,你可以为每一个客户端建立一个fifo

23,115

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧