请教关于“多个进程往同一个匿名管道写数据”时的进程

请教关于“多个进程往同一个匿名管道写数据”时的进程,第1张

1. 匿名管道读写 *** 作是原子安全的

2. 匿名管道在无数据的情况下读数据是阻塞式的

3. printf是带有缓冲区的,因此会等到缓冲区满后才会输出,产生了同步的假象

注意:在实时性高的场合下,通过匿名管道进行标准输出重定位,每次printf()后,请调用fflush(stdout)强制刷新缓冲区,问题解决!

你的if(!ReadFile(hRead,buf,100,&dwRead,NULL))(包括if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL))

)方法是同步的,它只有在读取到数据或者出现问题的时候才会返回,因此你说的“再点击读取就会假死”其实是readfile函数阻塞了,一直在等待。

而你再次写入数据的时候,readfile就能够读取到数据,也就退出阻塞状态,返回了。

你可以用ReadFileEx,它是异步的,命名管道是可以用的,但是我不是很清楚匿名管道能不能用,你自己试试,或者干脆就使用命名管道方式


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8163543.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存