我用creatpipe建立一个双管道与cmd控制台程序的通信,能顺利建立和输入输出操作,
但问题是,我建立进程时,就建立了一个***.exe的控制台程序,按原来在cmd运行的方法,结束这个exe程序是按CTRL+C,
但我用管道输入^C,或者3(ASCII)等方法都不能将哪exe程序从进程中删除, 请各位帮我出谋啊。
但问题是,我建立进程时,就建立了一个***.exe的控制台程序,按原来在cmd运行的方法,结束这个exe程序是按CTRL+C,
但我用管道输入^C,或者3(ASCII)等方法都不能将哪exe程序从进程中删除, 请各位帮我出谋啊。
解决方案 »
- 不规则类控件背景透明的问题
- vc6.0:在MFC框架中 运用CHtmlView 实现WEB网页嵌入
- 怎么实现一个按钮可以改变多个编辑框的值,例如:光标停在那个编辑框,点击下按钮,就改变那个编辑框的值 最好举例说明,谢谢!
- 用程序来实现局域网Guest用户登陆
- 使用WM_CHAR 向DOS窗口程序发送字符的问题.
- 写文件出错:写0x0A时,总是在该字节前多出一个0x0D的字节
- 我用waveXXX,mmioXXX寫錄音程式...如何實現暫停錄音,繼續錄音問題?----繼續寫文件問題..?
- C++怎样操作XML语言
- 我调用Excel出问题。大家快来帮帮忙呀。
- ATL项目中这样才能用COleDatetime?还有能操作DATE的吗?
- g.729.1音频编码标准解码后的文件为什么不能播放
- 谁能给个能显示GIF图片的控件啊
不行啊
又看了一下你前面的描述,感觉问题有点怪,好像是子进程在内核态出了什么问题,否则TerminateProcess是不会有问题的,除非句柄不对。当你打算结束子进程的时候,如果改成输入命令,可以继续执行吗?
void CVirtualHubDlg::CreateChildProcess(void)
// Create a child process that uses the previously created pipes for STDIN and STDOUT.
{ STARTUPINFO siStartInfo;
BOOL bSuccess = FALSE;
ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.hStdError = g_hChildStd_OUT_Wr;
siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;
siStartInfo.hStdInput = g_hChildStd_IN_Rd;
siStartInfo.wShowWindow = SW_HIDE;
siStartInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
bSuccess = CreateProcess(NULL,
(LPWSTR)(LPCTSTR)m_szCmdLine, // command line
NULL, // process security attributes
NULL, // primary thread security attributes
TRUE, // handles are inherited
0|CREATE_NEW_PROCESS_GROUP, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // STARTUPINFO pointer
&piProcInfo); // receives PROCESS_INFORMATION
if ( ! bSuccess )
ErrorExit(TEXT("CreateProcess"));
else
{
CloseHandle(piProcInfo.hProcess);
CloseHandle(piProcInfo.hThread);
}
}
然后就进行管道操作,我试过terminateprocess之前,piProcInfo的句柄是没有变过的啊
ErrorExit(TEXT("CreateProcess"));
else
{
Waitforsingleobject(piProcInfo.hProcess,一直等);
CloseHandle(piProcInfo.hProcess);
CloseHandle(piProcInfo.hThread);
}
}