是否有将hStdOutput放入字符串缓冲区的方法
Is there a method to get hStdOutput into an string buffer?
我成功地制作了一个句柄,该句柄从外部程序获取输出,然后导出到文件中。我想使用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/stream
与STARTUPINFO::hStdOut
字段一起使用。您可以通过CreatePipe()
创建一个管道,然后您的应用程序可以从管道中读取数据并将数据附加到std::string/stream
。
有关使用CreatePipe()
和CreateProcess()
捕获子进程输出的示例,请参阅MSDN文档。
创建具有重定向输入和输出的子进程
只需更改代码即可将捕获的输出写入std::string/stream
,而不是父进程的stdout
。
相关文章:
- 如何使用字符串find_first_of缓冲区形式(size_t n 参数)
- Qt PL/SQL - 赋值运算符 - 字符串缓冲区太小
- 清除输入缓冲区后未提取字符串流
- 协议缓冲区字符串字段的文本编码
- 如何避免将数据缓冲区的额外副本复制到字符串?
- 在 node.js 中将缓冲区从 C++ 转换为 UTF-8 字符串
- 将指针作为缓冲区传递到第一个字符串元素
- 为什么在调用C#DLL时不需要提供字符串缓冲区
- 如何在C++中对静态缓冲区执行字符串格式化?
- 自动截断和 null 终止缓冲区溢出中的字符串缓冲区
- 使用字符串缓冲区文件名更改OFStream的目录
- 如何编写高效的字符串缓冲区
- 包装字符串缓冲区
- 字符串缓冲区如何导致运行恶意代码
- 缓冲区已满时清除字符串缓冲区.这是什么图案
- 为什么_splitpath_s()使用自定义大小的字符串缓冲区来返回驱动器号
- Cassandra cppdriver查询字符串缓冲区溢出
- 为二进制数据创建字符串缓冲区的最佳方法
- 将文件读入字符串缓冲区并检测 EOF
- C++DLL中的线程安全字符串缓冲区变量