已知程序名为exeName的控制台程序可以长期连续的运行(程序初始化然后等待连接)。为了检测该程序的异常,并在异常情况下能够重新启动该程序,我打算用管道对该程序的输出进行分析,可是我用如下的代码启动exeName控制台的情况下,exeName很快就结束了,不能够持续运行。也就是初始化结束,(初始化之后,没有连接,就没有任何输出)然后该控制台程序就结束了。当然不设置STARTF_USESTDHANDLES,也就是不定向到管道的情况下,它是能够持续运行的。 STARTUPINFO si;
GetStartupInfo(&si);
SECURITY_ATTRIBUTES sa={sizeof(sa),NULL,TRUE};
HANDLE hReadPipe, hWritePipe;
CreatePipe(&hReadPipe,&hWritePipe,&sa,0);//创建匿名管道
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;//
△△△△△△△△△△
si.wShowWindow =SW_HIDE;
si.hStdOutput =hWritePipe;//将hWritePipe作为标准输出句柄
si.hStdError =hWritePipe;// fRet=CreateProcess(NULL,//
(LPTSTR)(LPCTSTR) exeName,//
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE, NULL,
strPath,
&si,
&pi);
CloseHandle(hWritePipe);
……
http://search.csdn.net/Expert/topic/2313/2313354.xml?temp=.800503
里面的不错,楼主你好好看看!