捕获远程进程子进程的标准输出
Capture stdout for a remote process' child process
目前正在处理我需要捕获外部进程的子进程的stdout/stdrr的情况。对于这种情况,我是否需要命名管道?
我目前已尝试以下方法:
SECURITY_ATTRIBUTES saAttr;
HANDLE hStdOutRd = NULL;
HANDLE hStdOutWr = NULL;
HANDLE hDupStdOutWr = NULL;
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle = TRUE;
saAttr.lpSecurityDescriptor = NULL;
CreatePipe(&hStdOutRd, &hStdOutWr, &saAttr, 0) )
SetHandleInformation(hStdOutRd, HANDLE_FLAG_INHERIT, 0) )
HANDLE hExProc = OpenProcess(PROCESS_DUP_HANDLE, false, EXTERNAL_PROC);
DuplicateHandle(GetCurrentProcess(),
hStdOutWr,
hExProc,
&hDupStdOutWr,
0,
TRUE,
DUPLICATE_SAME_ACCESS);
// Child process for EXTERNAL_PROC executes and should inherit the duplicated handle
// Read from hStdOutRd
从管道读取时,它要么挂起,要么不返回任何内容。我假设这是一个匿名管道,仅适用于父子进程,不适用于外部进程。我宁愿不使用命名管道,是否可以将管道从远程进程返回到我的进程,然后访问数据?如果是这样,那会是什么样子?
不,您不需要使用命名管道,匿名管道可以正常工作。MSDN 提供了从子进程捕获输出的完整示例:
创建具有重定向输入和输出的子进程
相关文章:
- 使用重定向标准处理子进程中的 kbhit
- 捕获远程进程子进程的标准输出
- 无法使用创建进程重定向标准输出
- 重定向子进程的输出
- 我可以重定向两个子进程的标准输出吗?
- 将生成的进程标准输出捕获为 unicode
- 将 Python 标准 IO 公开给子进程
- 控制台输出到子进程
- 在子进程处于活动状态时读取子进程的输出
- 可以在没有终端的 Unix 进程上写入标准输出
- 将一个进程标准输出重定向到管道将产生不同的运行结果
- 我已经设法将一些代码从 msdn 移植到 MinGW 以从子应用程序捕获标准输出,但它不会退出,这里有什么问题?
- 在Windows上等待进程或标准输出
- 在 win32、c++ 中的 2 个进程之间共享相同的标准输出
- CreateProcess:将子标准输出重定向到C++/Windows中的父标准输出
- 重定向子进程的输入和输出不起作用
- 提振.进程:捕获的标准输出被缓冲到大小为X
- 如何将视频文件作为输入传递给NodeJS中的子进程,并接收帧/图像作为输出
- Python逐行从子进程捕获标准输出
- 以编程方式从父进程的子进程捕获打印,因此它们不会转到标准输出