【问题标题】:Windows equivalent to "/dev/stdin"?Windows 相当于“/dev/stdin”?
【发布时间】:2011-09-12 23:21:37
【问题描述】:

我有 Python 代码与只接受文件名的 C++ 库对话。我希望它从标准输入读取。在 Unix 机器上,我可以使用“/dev/stdin”。我以为我可以在 Windows 上使用特殊的“CON”设备,但这更像是 /dev/tty,因为“echo something | my_program”不起作用。

在 Windows 下支持管道不是必需的,但现在我很好奇。该操作系统是否有类似文件名“/dev/stdin”的东西?

【问题讨论】:

标签: windows stdin


【解决方案1】:

据我所知,没有 /dev/stdin 的等价物。但是,如果您真的需要,您可以创建自己的命名管道 (CreateNamedPipe) 并将名称传递给 C++ 库,使用单独的线程将来自标准输入的输入提供给命名管道。

【讨论】:

    【解决方案2】:

    Windows 上等效的伪文件是conIN$conOUT$

    【讨论】:

    • 那些不是等价的。这个问题说明了为什么(他们的行为更像/dev/tty),Criag Ringer 的评论通过一个例子对其进行了扩展。
    【解决方案3】:

    我可能误解了您的问题 - 您知道 cin 和 stdin,对吗?如果您需要 ReadFile 或其他任何东西的真实实时 winapi 句柄,请使用 GetStdHandle(STD_INPUT_HANDLE)

    【讨论】:

    • 底层 C++ 代码中的“打开文件”函数采用文件名或流,但其 Python 绑定不支持流接口。我只能传递一个字符串文件名而不是 cin 或文件句柄。相反,我想用“/dev/stdin”之类的东西来伪造它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多