匿名管道 远程cmd

管道是单向的,传送数据的方向是固定的,所以互相通信需要两个管道。

STARTUPINFO si;
ZeroMemory(&si,sizeof(si));
si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow = SW_SHOW;//SW_HIDE

//创建进程且重定向标准输入输出

//将其标准输入设置为hReadPipe2
//将其标准输出和错误输出设置为hWritePipe1
//通信逻辑见上图
si.hStdInput = hReadPipe2; //子进程从这里读取指令
si.hStdOutput = si.hStdError = hWritePipe1; //子进程把回显写入这个句柄
char cmdLine[] = "cmd";
PROCESS_INFORMATION ProcessInformation;
ret=CreateProcess(NULL,(LPSTR)cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation);

si.hStdInput = hReadPipe2;

si.hStdOutput = si.hStdError = hWritePipe1;

这两个句柄是给子进程用的读写句柄,另两个就是父进程的读写句柄。

原文地址:https://www.cnblogs.com/Browneyes/p/6053396.html