project1.cpp

来自「一本介绍C++Builder网络应用编程的好书。深入浅出」· C++ 代码 · 共 52 行

CPP
52
字号
#include <stdio.h>
#include <windows.h>
#pragma hdrstop
#include <condefs.h>

//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
 STARTUPINFO myStartup;
 PROCESS_INFORMATION myInfo;
 HANDLE hRead,hWrite,hTmp;
 bool bReturn;
 char readBuf[100];
 DWORD bytesRead=0;

 //创建匿名管道
 if(CreatePipe(&hRead,&hWrite,NULL,0))
   printf("Pipe Created OK .\n");
 else
   printf("Pipe Creation Error:%d\n",GetLastError());

 //获取当前进程的标准输出
 hTmp=GetStdHandle(STD_OUTPUT_HANDLE);
 //把标准输出设置给管道
 SetStdHandle(STD_OUTPUT_HANDLE,hWrite);
 GetStartupInfo(&myStartup);
 bReturn=CreateProcess("d:\\temp\\debug.exe",NULL,NULL,NULL,true,
                       CREATE_NEW_CONSOLE,
                       NULL,NULL,&myStartup,&myInfo);
 SetStdHandle(STD_OUTPUT_HANDLE,hTmp);
 if(bReturn)
   printf("Create Process OK\n");
 else
   printf("CreateProcess error:%u\n",GetLastError());

 CloseHandle(hWrite);
 while(ReadFile(hRead,readBuf,100,&bytesRead,NULL))
   {
    readBuf[bytesRead]='\0';
    printf("Read %d bytes from pipe[%s]\n",bytesRead,readBuf);
   }

 if(GetLastError()==ERROR_BROKEN_PIPE)
   printf("Pipe closed by child process\n");
 else
   printf("Read error:%d\n",GetLastError());

 getchar();
 return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?