简介:
在本地,用父进程创建一个cmd.exe子进程,这个子进程的输入输出被重定向到两条匿名管道,从而实现与父进程通信。父进程输入命令到一条管道,子进程读取后执行并输出到另一条管道,父进程读取后输出到窗口。
此版本源代码借鉴并修改、优化了前人的创作,详见:https://blog.csdn.net/aq782645210/article/details/16370409 中的评论
源代码:
#include <stdio.h>
#include <WINDOWS.H>
#define SEND_BUFF_SIZE 1024
//实现去除执行结果中的 "命令\n"
void print(char *cmdstr)
{
while(*((char*)cmdstr++)!='\n');
printf(cmdstr);
}
int main()
{
HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2; //四个HANDLE 用来创建两个管道
CHAR Buff[SEND_BUFF_SIZE] = {
0};
CHAR sendBuff[SEND_BUFF_SIZE] = ("dir \n");
//安全属性的东西
SECURITY_ATTRIBUTES sa