是否有可能获得 HANDLE
引用可以在 Windows 上使用 WriteFile
写入的标准错误输出?
我问的原因是我正在为我编写一些日志记录实用程序。我正在尝试将数据直接提供给系统:
- 避免与未冲洗的东西有关的任何潜在问题,并且
- 让系统在不需要锁定的情况下交错来自不同线程的消息(如果这真的有效是另一个问题)。
应用程序是 windows 子系统,所以如果应用程序确实继承了标准错误,它应该只写在任何地方?如果可能的话,那就是。
注意:我已经将日志接收器发送到 OutputDebugString
。它与其他几个平台是等价的。和文件,它使用低级 API 来避免任何额外的缓冲(因为消息已经在堆栈缓冲区中组装并且需要立即刷新)。而且我只想重用编写文件的代码来编写标准错误。
最佳答案
使用GetStdHandle
使用 STD_ERROR_HANDLE
。
HANDLE stderr = GetStdHandle(STD_ERROR_HANDLE);
WriteFile(stderr, /*...*/);
关于c++ - 如何使用 WriteFile 写入 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196716/