先创建了匿名管道,而后又创建了进程调用客户端。运行只需客户端执行的程序时没有问题,比如当创建进程为
CreateProcess(NULL,“command get ip”,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)时,输出端会显示出相应的ip地址。
现在的问题是:当创建进程为
CreateProcess(NULL,“command update”,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)时,客户端会返回一句话问你是否确认更新,需要再往command中输入y或者n才会继续执行。此时command窗口已经打开,只需输入y或者n,用createprocess肯定不行,请问该怎么才能输入呢?

解决方案 »

  1.   

    先看看command update有没command update -y之类自动应答的参数
    或者向管道写入数据(si有3个句柄,标准输出,错误输出,标准输入)
    WriteFile(si.hStdInput,...);
      

  2.   

    有点糊涂,一般而言,创建管道时CreatePipe(&hRead,&hWrite,&sa,0),然后创建进程时设置
    si.hStdError = hWrite;
    si.hStdOutput = hWrite; //将父进程创建匿名管道时返回的写句柄赋给所启动子进程的标准输出句柄
    然后用readfile(hRead,...);来读取管道,用writefile(hWrite,...);来写管道,对吗?还是我弄反了?此时writefile(hWrite,...);根本不是写管道??
      

  3.   


    要再创建一个pipe
    CreatePipe(&hRead2,&hWrite2,&sa,0);
    si.hStdInput = hRead2;
    WriteFile(hWrite2,...);