永发信息网

windows创建的匿名管道程序如何区分printf和WriteFile?

答案:2  悬赏:0  手机版
解决时间 2021-02-22 05:41
现在创建了子进程,匿名管道,并且属性带有STD_USERHANDLE,现在无论是printf,count,还是WriteFile都能重定向到我的父进程,现在我想实现,只重定向WriteFile,那两个我还是想做正常的打印工作,怎么搞啊
最佳答案
这个区别不了的,你肯定把WriteFile也写进stdout流了,对你的父进程来说,就是stdout。

但是你可以利用一下stderr这个标准流,因为printf和cout都写入stdout,你用你的管道只重定向stderr,这样,将WriteFile写进stderr,就区分两个流了。

控制台一共三个标准流,分别是stdin, stdout和stderr。早期的时候为了让普通信息和错误信息分开显示,才有了stdout和stderr,而现在基本上都不用stderr了,但是这个流始终是存在的。

用CreateProcess创建的时候,STARTUP_INFO有个参数就是HANDLE hStdError,你将管道赋给他。

其实进程间通信用内存文件映射更好。
全部回答
你好! 这么理解管道不正确。 应该是 1. 父向子管道写数据之后,关闭管道(写一个 FEOF) 2. 子收到数据完成后,再向父写数据,并关闭管道 3. 父收到数据后,显示,关闭所有句柄,结束 比如控制台命令C:\> C:\>DIR 可以显示当前目录 C:\>DIR | MORE 逐页显示目录,就是DIR先产生数据,通过匿名管道送给MORE程序,MORE显示在控制台上,等待用户翻页,如果DIR完成,则MORE收到匿名管道FEOF数据,关闭管道并退出 这个命令里是先启动的DIR(父),后启动MORE(子),DIR其实已经一口气把所有内容都写入管道了,并且写完后关闭了管道。MORE取到数据,然后执行完毕,退出。 如果对你有帮助,望采纳。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁知道济宁小学是如何划片分区的?
魔兽世界天谴之门任务流程
怎样在将坐标点展入CAD中?
与26相邻的两个偶数是( ),( ),与26相邻的两个
藕粉可以拿开水喝嘛?那怎么泡藕粉呢?
罗家垭在哪里啊,我有事要去这个地方
我户籍是四川的,学籍在山东,我该在那高考,
吴家派出所康绿公司警务室地址在什么地方,想
xp系统里的清理系统垃圾工具在哪里?
利生手机专营店地址在哪,我要去那里办事
两个月的金毛微量元素吃了上吐下泻怎么办
【列那狐】我眼中的列那狐 作文
恒远超市我想知道这个在什么地方
香港到汕尾要多久时间
世界上什么最美丽,鸟儿美丽歌词是什么歌
推荐资讯
都安世霖综合经营部在什么地方啊,我要过去处
城关镇的介绍
栖霞市蛇窝泊道路运输管理所这个地址在什么地
博富文柑橘加工厂地址在什么地方,想过去办事
中国土黄色军装是什么兵
急急急!!!!十万火急!!在没有冰箱的前提
大李凉皮(华山路店)在什么地方啊,我要过去处
钢结构厂房的水电安装预算的实例
【后世】孔子的学说对后世有何影响?
金剑茶行在哪里啊,我有事要去这个地方
娄庄镇先进村老年人协会在什么地方啊,我要过
婆婆总搅和穷横不说理老公嘛都听她的真受气啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?