gpt4 book ai didi

c - 标准输入上的 ReadFile 在 Windows 7 上崩溃

转载 作者:行者123 更新时间:2023-11-30 20:10:46 25 4
gpt4 key购买 nike

尝试使用 ReadFile 读取标准输入可以在 Windows 8+ 上运行,但在 Windows 7 上会崩溃。

#include <windows.h>

int main() {
char c[1];
HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
ReadFile(in, c, 1, NULL, NULL);
return 0;
}

产生

Program received signal SIGSEGV, Segmentation fault.
0x00000000770f5803 in VerifyConsoleIoHandle () from C:\Windows\system32\kernel32.dll

在 Windows 7 上

最佳答案

the lpNumberOfBytesRead argument is required, unless the ReadFile will complete asynchronously (the file/device was opened with the correct flags and lpOverlapped is provided)

在 Windows 8 及更高版本上,在写入之前会检查此参数是否为 NULL(实际上使其成为可选),但这在任何地方都没有记录。

读取标准输入而不检查读取的字节数无论如何都是一个坏主意,因为如果输入重定向到管道,则读取的字节数可能小于请求的字节数(甚至为 0)。

关于c - 标准输入上的 ReadFile 在 Windows 7 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43160968/

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