Named Pipes using C++
我正在尝试创建一个命名管道服务器,以在没有客户端的情况下写入管道。
我想做的是
1)CreateNamedPipe
2)我不希望客户端立即连接
3)该管道将由服务器写入,稍后将读取该管道。
是否可以做这样的事情?
如果您对此问题有任何疑问,请提供帮助。
- 香港专业教育学院最近使用的命名管道,我不认为管道可以用于读取/写入,除非管道的两端都连接在一起。
-
在问之前,您当然已经尝试了几种方法,对吗?那么,您能否说出您尝试过的内容以及失败的原因?
-
我做了一个管道服务器和一个管道客户端。创建管道后,我必须等待客户端连接到管道,一旦连接,服务器将写入管道,客户端读取管道。
-
在另一种情况下,我创建了一个管道,并且不等待客户端连接,然后尝试写入该管道,然后出现错误218"正在等待打开管道另一端的进程。"
您需要有一个单独的线程,该线程将使用ConnectNamedPipe在给定的命名管道上等待。一旦客户端连接,ConnectNamedPipe将返回。使用该新连接的管道进行通信(可能为此新连接生成一个新线程),然后返回到ConnectNamedPipe进行另一个管道连接。
- 但是它必须等待客户端连接。
-
为什么会有问题呢?只需写入某种缓冲区,直到客户端连接为止(例如,如果有字符串,则为std::stringstream),然后在客户端连接后,将缓冲区的当前内容写入管道,然后将将来的消息直接写入管道。
-
@smerlin我确实有这种情况,如果客户端永不连接,我可以将其写入文件中,但是我只想知道有可能创建一个管道并且仅在不连接客户端的情况下写入该管道。