C++检测进程数量,打开一定数量的进程(三)
2015-01-14 15:42
155 查看
一下程序可以实现打开3个进程,并且实时的监控进程数量,等到所有的进程都退出后,再重新创建3个进程。如此循环往复
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <tlhelp32.h>
#include "Psapi.h"
#pragma comment(lib,"Kernel32.lib")
using namespace std;
void openProcess()
{
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;
if(!CreateProcess(TEXT("D:\\abc\\abc.exe"),//创建进程
NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi))
{
cout<<"create failed"<<endl;
}
else
cout<<"create a process successfully!"<<endl;
Sleep(300);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
printf("新进程的ID号:%d\n",pi.dwProcessId);
printf("新进程的主线程ID号:%d\n",pi.dwThreadId);
}
int _tmain(int argc, TCHAR* argv[])
{
for(int i=0;i<3;i++)
{
openProcess();
Sleep(3000);
}
int num=0;
TCHAR exe_name[256]=_T("abc.exe");
PROCESSENTRY32 pe32;
HANDLE HprocessSnap/*=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)*/;
pe32.dwSize=sizeof(pe32);
BOOL bMore/*=::Process32First(HprocessSnap,&pe32)*/;
while(num>=0)
{
num=0;
HprocessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//不断重复创建进程快照
if(HprocessSnap==INVALID_HANDLE_VALUE)
{
printf("create 进程快照失败!\n");
return -1;
}
bMore=::Process32First(HprocessSnap,&pe32);
while(bMore)
{
if(!_tcscmp(exe_name,pe32.szExeFile))//不停的查询自己创建的进程是否还在运行
{
num++;
printf("find a processManage.exe process num is %d\n",num);
}
bMore=::Process32Next(HprocessSnap,&pe32);
}
if(num>0)
{
Sleep(1000);
}
else
{
for(int i=0;i<3;i++)
{
openProcess();
Sleep(3000);
}
}
}
return 0;
}
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <tlhelp32.h>
#include "Psapi.h"
#pragma comment(lib,"Kernel32.lib")
using namespace std;
void openProcess()
{
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;
if(!CreateProcess(TEXT("D:\\abc\\abc.exe"),//创建进程
NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi))
{
cout<<"create failed"<<endl;
}
else
cout<<"create a process successfully!"<<endl;
Sleep(300);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
printf("新进程的ID号:%d\n",pi.dwProcessId);
printf("新进程的主线程ID号:%d\n",pi.dwThreadId);
}
int _tmain(int argc, TCHAR* argv[])
{
for(int i=0;i<3;i++)
{
openProcess();
Sleep(3000);
}
int num=0;
TCHAR exe_name[256]=_T("abc.exe");
PROCESSENTRY32 pe32;
HANDLE HprocessSnap/*=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)*/;
pe32.dwSize=sizeof(pe32);
BOOL bMore/*=::Process32First(HprocessSnap,&pe32)*/;
while(num>=0)
{
num=0;
HprocessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//不断重复创建进程快照
if(HprocessSnap==INVALID_HANDLE_VALUE)
{
printf("create 进程快照失败!\n");
return -1;
}
bMore=::Process32First(HprocessSnap,&pe32);
while(bMore)
{
if(!_tcscmp(exe_name,pe32.szExeFile))//不停的查询自己创建的进程是否还在运行
{
num++;
printf("find a processManage.exe process num is %d\n",num);
}
bMore=::Process32Next(HprocessSnap,&pe32);
}
if(num>0)
{
Sleep(1000);
}
else
{
for(int i=0;i<3;i++)
{
openProcess();
Sleep(3000);
}
}
}
return 0;
}
相关文章推荐
- 获取每个进程可打开的最大文件数量
- 在系统中检测指定的窗口是否已经打开,检查某进程是否存在
- 一定是我打开的姿势不对——Android下使用kill命令杀死指定进程
- 查看当前进程打开fd的数量及上限
- Linux下检测Apache进程数量并自动重启的脚本
- 查看系统各个进程打开的文件描述符数量
- 查看Linux某个进程打开的文件句柄(file descriptor)数量
- windows vis c++/GetEnvironmentStrings 如何获取打开进程的环境变量字符串
- C++进程检测,发现进程路径,关闭进程(二)
- C++进程检测,发现进程路径,关闭进程(一)
- Resource temporarily unavailable 解决方法 修改用户最大进程数量 最大打开文件数量
- C/C++检测进程是否被调试
- 物理内存足够,但进程数增加到一定数量之后,用客户端远程启动的服务端进程再也启动不了
- C++代码 检测某进程是否开启
- 检测Oracle进程数量命令
- 用linux命令和程序实际测试一下单进程能打开的最大的句柄数(也可以说是文件数)------并不一定是1024/2048哈
- 进程打开的文件句柄数量超过系统默认值1024,就会提示“too many files open”信息
- Linux下查看及修改进程打开的文件句柄数量
- C/C++: linux下打开新进程
- 在系统中检测指定的窗口是否已经打开,检查某进程是否存在