gpt4 book ai didi

c - 如何检查标准输出是否已在 Windows 上重定向到 NUL(在 Linux 上也称为/dev/null)?

转载 作者:行者123 更新时间:2023-12-04 09:40:15 25 4
gpt4 key购买 nike

如何检查我的程序的 stdout已重定向至 NUL ?
这样我就可以避免输出数据,因为它毫无意义。

我主要在 Windows 上需要这个,但如果你有一个 Linux 解决方案,它可能在 future 对其他人有帮助,所以也可以随意发布。

最佳答案

可能还有其他方法可以做到这一点(如果我忽略了它的正确功能,那就不足为奇了),但这是一种方法:

enum
{
Output_Console,
Output_File,
Output_NUL,
};

bool GetOutputHandleType(int* piType)
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
if (h)
{
BY_HANDLE_FILE_INFORMATION fi;
if (GetFileInformationByHandle(h, &fi))
{
*piType = Output_File;
return true;
}
if (GetLastError() == ERROR_INVALID_FUNCTION)
{
*piType = Output_NUL;
return true;
}
if (GetLastError() == ERROR_INVALID_HANDLE)
{
*piType = Output_Console;
return true;
}
}
return false;
}

关于c - 如何检查标准输出是否已在 Windows 上重定向到 NUL(在 Linux 上也称为/dev/null)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069853/

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