Windows 相当于“/dev/stdin”?
我有与 C++ 库对话的 Python 代码,该库只接受文件名。我希望它从标准输入读取。在 Unix 机器上我可以使用“/dev/stdin”。我以为我可以在 Windows 上使用特殊的“CON”设备,但这更像是 /dev/tty,因为“echo Something | my_program”不起作用。
在 Windows 下支持管道并不是必需的,但现在我很好奇。该操作系统是否有类似文件名“/dev/stdin”的内容?
I have Python code talking to a C++ library which only takes filenames. I want it to read from stdin. On Unix machines I can use "/dev/stdin". I thought I could use the special "CON" device on Windows, but that's more like /dev/tty in that "echo something | my_program" does not work.
Supporting pipes under Windows isn't essential, but now I'm curious. Is there something like the filename "/dev/stdin" for that OS?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
据我所知,没有与 /dev/stdin 等效的东西。但是,如果您确实需要,可以创建自己的命名管道 (CreateNamedPipe) 并将名称传递给 C++ 库,使用单独的线程将输入从 stdin 馈送到命名管道中。
To the best of my knowledge there is no equivalent of /dev/stdin. However, if you really needed to you could create your own named pipe (CreateNamedPipe) and pass the name to the C++ library, using a separate thread to feed the input from stdin into the named pipe.
Windows 上的等效伪文件是
conIN$
和conOUT$
。The equivalent pseudo files on Windows are
conIN$
andconOUT$
.我可能误解了你的问题 - 你知道 cin 和 stdin,对吧?如果您需要 ReadFile 或其他内容的实时 winapi 句柄,请使用 GetStdHandle(STD_INPUT_HANDLE)
I may be misinterpreting your question - you know about cin and stdin, right? If you need a real live winapi handle for ReadFile or whatever, use GetStdHandle(STD_INPUT_HANDLE)