如何检查我的程序的 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/