社区
进程/线程/DLL
帖子详情
如何等待CreateProcess()创建的进程结束?
clfk
2003-04-10 08:12:08
用CreateProcess()创建进程,怎么才能知道创建完成了?
...全文
401
3
打赏
收藏
如何等待CreateProcess()创建的进程结束?
用CreateProcess()创建进程,怎么才能知道创建完成了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
clfk
2003-04-10
打赏
举报
回复
谢了!
pcman1990
2003-04-10
打赏
举报
回复
CreateProcess()说明如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
// pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
其中最后一个参数是指向PROCESS_INFORMATION结构的指针,PROCESS_INFORMATION结构如下:
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION;
这个参数保存了CreateProcess()创建进程的一些信息,如进程的句柄等,可以用WaitForSingleObject()等待这个进程句柄发生变化来判断CreateProcess()是否完成。
示例代码如下:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if(!CreateProcess(NULL,"MyChildProcess", NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi))
{
return;
}
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
masterz
2003-04-10
打赏
举报
回复
PROCESS_INFORMATION pi;
STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = 0;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
BOOL bres = CreateProcess(NULL,"test a.txt b.txt",NULL,NULL,false,
NORMAL_PRIORITY_CLASS,
NULL,NULL,&si,&pi);
if(bres==false)
{
AfxMessageBox("CreateProcess failed");
}
else
{
CloseHandle(pi.hThread);
DWORD dwret=WaitForSingleObject(pi.hProcess, 1000*30);
switch(dwret)
{
case WAIT_OBJECT_0:
DWORD dwexitcode;
bres = GetExitCodeProcess(pi.hProcess,&dwexitcode);
TCHAR exitmsgbuf[1024];
if(bres)
{
wsprintf(exitmsgbuf,"exit code:%d",dwexitcode);
}
else
wsprintf(exitmsgbuf,"exit code failed to return");
AfxMessageBox(exitmsgbuf);
break;
default:
AfxMessageBox("exit for other reason");
}
CloseHandle(pi.hProcess);
}
用
CreateProcess
创建
进程
用
CreateProcess
创建
进程
用
CreateProcess
创建
进程
用
CreateProcess
创建
进程
用
CreateProcess
创建
进程
一个简单的可以Debug用
CreateProcess
创建
的
进程
例子
通过写代码,attach程序中
创建
的其他
进程
,将其加入VS的Debugger,以方便调试
vc
创建
和
结束
进程
实例
启动一个应用程序,即可产生一个
进程
,windows中各个
进程
之间的内存是相对独立的
Delphi XE10 调用外部程序并
等待
其运行
结束
_调用外部程序
等待
运行
结束
_
Delphi XE10 调用外部程序并
等待
其运行
结束
创建
进程
和销毁
进程
在vs2008中
创建
和销毁
进程
,打开记事本 关闭记事本 简单的demo c++
进程/线程/DLL
15,474
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章