请问标准输入、输出从定向后,可以读写二进制文件吗?

mark_too 2009-11-17 03:37:53
功能描述:
有多个可执行dos程序,该程序如果不输入参数,则读文件为stdin,写文件为stdout。程序流程是:
编写一个主界面,启动可执行dos程序,重定向该dos程序的输入和输出,界面程序把二进制文件写入重定向的输入dos可执行程序中,dos可执行程序处理二进制文件后,在把二进制文件写到重定向的stdout,再由界面程序读dos程序的stdout。

问题:界面程序读写dos程序的stdout时,读不出任何内容,并报错

请问上述功能可以实现吗?可以向重定向的stdout中写入二进制文件吗?为什么可以读写如的二进制文件,但是写的时候dos程序就退出了?
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chongzipy 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mark_too 的回复:]

终于实现了,结贴 调用 setmode 就可以设置 dos程序的标准输入输出为二进制模式了
[/Quote]

请问如何控制二进制stdin的结束呢,我试验的命令行程序会一直处于等待挂起状态,就算关闭输入数据的管道也不管用阿。
mark_too 2009-12-28
  • 打赏
  • 举报
回复
终于实现了,结贴 调用 setmode 就可以设置 dos程序的标准输入输出为二进制模式了
mark_too 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lisunlin0 的回复:]
可以。
[/Quote]

请问用createpipe创建标准输入的管道后,如何设置管道为二进制读写模式,或者如何把写入缓冲区的数据推出去?
hallowwar 2009-11-18
  • 打赏
  • 举报
回复
帮顶,题目没懂,感觉很有意义。
y_l_stone 2009-11-18
  • 打赏
  • 举报
回复
我也刚想编这样一个程序呢,主要是做一个自己的CMD
还没开始动手......
sunlin7 2009-11-18
  • 打赏
  • 举报
回复
可以。
MoXiaoRab 2009-11-18
  • 打赏
  • 举报
回复
理论上是可以的
mark_too 2009-11-18
  • 打赏
  • 举报
回复
感谢 hallowwar,题目类似于编写自己的 IDE,有多个dos可执行程序,为了进行实时处理,在不输入参数情况下,dos程序输入是 stdin,输出是stdout,这样,界面程序把数据灌入dos程序的stdin,经过dos程序处理后,在读出stdout输出的结果文件。

如果写入stdin的是文本的话,可以得到stdout输出。而写入二进制文件的话,则stdout没有输出,怀疑是在默认情况下,stdin和stdout为文本模式,需要\r\n才能推出缓冲区中内容

mark_too 2009-11-17
  • 打赏
  • 举报
回复
该问题也可以说等价于,通过CreatePipe 创建的管道,重定向stdin,stdout后,如何设置管道可以操作二进制文件呢?谢谢!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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