关于管道向命令行输入输出失败问题

eagleatustb 2012-10-24 03:17:04
情景:我要实现的目的是通过我的程序,取得本地的CMD的命令输入入口和输出。即我输入任何CMD命令,能通过CMD窗口(隐藏的)来执行,并把结果输出到我指定的地方。
实现方法:主线程M先创建两个子线程A和B。
线程A负责产生输入管道PA,并把从其他方式送过来的命令写到这个管道PA(通过在创建CMD进程时指定startinfo.hStdInput来指定监听的输入);
线程B负责产生输出管道PB,并监听管道PB数据写到指定目的地。
主线程等A,B线程产生好管道以后,创建CMD的进程,在参数中把startinfo.hStdInput设置为读PA数据,startinfo.hStdOutput设置为输出到PB。
情景如下图:

问题描述,线程A正常运行,线程B也正常运行,主线程创建CMD进程成功,其设置输入输入参数也是在管道产生之后的正确参数。问题是:我可以正常在线程A把命令数据(如dir)写到管道PA中(WriteFile返回TRUE),但无法在线程B中监听到处理结果。

我觉得上图两个问号就是可能出现问题的地方。但目前没有办法确认,下面附上代码。请问有哪位处理过相关问题的,麻烦指导一下。谢谢!
代码贴在这里比较乱,在我博客里:http://blog.csdn.net/eagleatustb/article/details/8107291
也可以在博客里回复,有用的我会找你给你分。
...全文
236 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
eagleatustb 2012-10-25
  • 打赏
  • 举报
回复
已经找到答案,是在读入CMD命令以后没有加回车结束符造成的。结贴。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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