是否有将hStdOutput放入字符串缓冲区的方法

Is there a method to get hStdOutput into an string buffer?

本文关键字:字符串 缓冲区 方法 hStdOutput 是否      更新时间:2024-09-21

我成功地制作了一个句柄,该句柄从外部程序获取输出,然后导出到文件中。我想使用stringstream或等效程序来执行此操作。这里有一个代码片段来展示我想做什么

//std::string OUTPATH = _FilePath + L"out";
std::string filestream{};
//HANDLE h = CreateFileA(LuaBuffer.data(),
//    FILE_APPEND_DATA,
//    FILE_SHARE_WRITE | FILE_SHARE_READ,
//    &sa,
//    CREATE_ALWAYS,
//    FILE_ATTRIBUTE_NORMAL,
//    NULL);
si.hStdOutput = filestream.data();
si.dwFlags |= STARTF_USESTDHANDLES;

如果这是不可能的,那么从外部控制台程序获得输出的最快方法是什么?非常感谢。

不能将std::string/streamSTARTUPINFO::hStdOut字段一起使用。您可以通过CreatePipe()创建一个管道,然后您的应用程序可以从管道中读取数据并将数据附加到std::string/stream

有关使用CreatePipe()CreateProcess()捕获子进程输出的示例,请参阅MSDN文档。

创建具有重定向输入和输出的子进程

只需更改代码即可将捕获的输出写入std::string/stream,而不是父进程的stdout