利用管道与Ping.exe通信,发现阻塞,该怎么解决
利用管道与Ping.exe通信,发现阻塞
我利用CreatePipe创建了一个管道,再利用CreateProcess创建了Windows的Ping.exe进程, 我想利用那个管道来得到Ping.exe执行的结果,得到Ping执行结果我是利用了ReadFile(PipeRead, pucBuffer, BUFFERSIZE, &dwReadCount, NULL)来得到它的执行结果, 但是我发现一个问题,在有些时候程序会阻塞在ReadFile这个函数里, 请各位高手指点,有什么办法能让它不阻塞! 阻塞的原因是因为Ping.exe还没有Ping到对方,即还没有向管道中写数据, 这个时候ReadFile占用了管道!
------解决方案--------------------
ReadFile会一直等待有信息出现,这就阻塞了。可以先用PeekNamedPipe进行测试管道内是否有信息再读,就不会阻塞了
我利用CreatePipe创建了一个管道,再利用CreateProcess创建了Windows的Ping.exe进程, 我想利用那个管道来得到Ping.exe执行的结果,得到Ping执行结果我是利用了ReadFile(PipeRead, pucBuffer, BUFFERSIZE, &dwReadCount, NULL)来得到它的执行结果, 但是我发现一个问题,在有些时候程序会阻塞在ReadFile这个函数里, 请各位高手指点,有什么办法能让它不阻塞! 阻塞的原因是因为Ping.exe还没有Ping到对方,即还没有向管道中写数据, 这个时候ReadFile占用了管道!
------解决方案--------------------
ReadFile会一直等待有信息出现,这就阻塞了。可以先用PeekNamedPipe进行测试管道内是否有信息再读,就不会阻塞了