// HoldOn.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "atltime.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
if (argc != 2)
{
printf("please input: holdon xxx.exe");
getchar();
return 0;
}
char exefile[32];
sprintf(exefile,argv[1]);
STARTUPINFO si;
PROCESS_INFORMATION pi; //进程信息:
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
do{
// 创建子进程,判断是否执行成功
if(!CreateProcess( NULL,exefile/*"process.exe"*/,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
cout << "创建进程失败.." << GetLastError() << endl;
system("pause"); //用于测试
return 0;
}
CTime time = CTime::GetCurrentTime();
//进程执行成功,打印进程信息
cout << "以下是子进程的信息:" << endl;
cout << "创建时间:"<< time.GetMonth()<<"-"<<time.GetDay()<<" "<<time.GetHour()<<":"<<time.GetMinute()<<":"<<time.GetSecond()<<endl;
cout << "进程ID pi.dwProcessID: " << pi.dwProcessId << endl;
cout << "线程ID pi.dwThreadID : " << pi.dwThreadId << endl;
// 等待知道子进程退出...
WaitForSingleObject( pi.hProcess, INFINITE);//检测进程是否停止
//WaitForSingleObject()函数检查对象的状态,如果是未确定的则等待至超时
//子进程退出
cout << "子进程已经退出..." << endl;
//关闭进程和句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
//system("pause");//执行完毕后等待
}while(true);//如果进程推出就再次执行方法
exit(0);
return 0;
}
进程守护HoldOn
最新推荐文章于 2020-12-14 12:03:05 发布