如何使用WriteFile写入stderr

Jan*_*dec 3 c++ winapi

是否可以HANDLE参考可以WriteFile在Windows 上编写的标准错误输出?

我问的原因是我正在为我写一些日志工具.我试图将数据直接提供给系统:

  • 避免任何潜在的问题,没有被冲洗的东西
  • 让系统交错来自不同线程的消息而不需要锁定(如果实际工作是另一个问题).

该应用程序是Windows子系统,所以它应该只在应用程序实际继承​​标准错误的任何地方写?如果那是可能的,那就是.

注意:我已经有日志接收器OutputDebugString.它与其他几个平台相当.并且文件,它使用低级API来避免任何额外的缓冲(因为消息已经在堆栈缓冲区中组装并且需要立即刷新).我只是想重用代码来编写文件,以便在标准错误上编写.

ava*_*kar 9

使用GetStdHandleSTD_ERROR_HANDLE.

HANDLE stderr = GetStdHandle(STD_ERROR_HANDLE);
WriteFile(stderr, /*...*/);
Run Code Online (Sandbox Code Playgroud)