gpt4 book ai didi

winapi - 如何打开 "nul"文件?

转载 作者:行者123 更新时间:2023-12-04 17:42:31 24 4
gpt4 key购买 nike

我需要创建一个将标准错误流重定向到某个文件的新进程。创建子进程的代码没有可用的控制台,因此在某些情况下 GetStdHandle(any) 将返回 0。子进程将出于某种原因尝试复制其所有标准 IO 句柄(子进程的源代码不可用) 所以它的所有句柄都应该是有效的。

所以我需要以与可以从控制台运行相同的方式运行该过程:

someproc <nul >nul 2>err

我看到了一些方法:
1. 创建两对管道。这可能是一个很好的解决方案,但对我来说太复杂了。
2. 使用 CreateFile("nul", ...) 函数调用打开“nul”文件。此调用未创建任何文件,但这对我来说也很奇怪。
3. 使用 INVALID_HANDLE_VALUE。这也有效,但我认为另一个子进程可能存在不同的问题。

我相信有更好的方法。

最佳答案

正如最初所说,您已经回答了自己的问题。要打开“nul”文件,您只需指定 "nul"当您调用 CreateFile .它只是看起来很奇怪,因为几乎没有人使用过该文件名。 (我认为它的使用频率不如我看到的 /dev/null 。)不过,它是完全有效的。

但是如果你发现 Invalid_Handle_Value也可以,然后继续使用它。这当然是最简单的。最初,我没想到它会起作用,因为我不希望它是可复制的。

关于winapi - 如何打开 "nul"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/438092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com