C++ 如何获得当前电脑里运行的所有进程ID并关闭指定的进程

C++ 如何获得当前电脑里运行的所有进程ID并关闭指定的进程,第1张

HANDLE GetProcessHandle(int nID)

{

return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);

}

HANDLE GetProcessHandle(LPCTSTR pName)

{

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (INVALID_HANDLE_VALUE == hSnapshot) {

return NULL;

}

PROCESSENTRY32 pe = { sizeof(pe) };

BOOL fOk;

for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) {

if (!_tcscmp(peszExeFile, pName)) {

CloseHandle(hSnapshot);

return GetProcessHandle(peth32ProcessID);

}

}

return NULL;

}

关闭进程

int killpro(CString a)//CString a里面就是进程名字。

{

PROCESSENTRY32 pe32;

pe32dwSize =sizeof(pe32);

HANDLE hpro=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(hpro==INVALID_HANDLE_VALUE)

{

return 0;

}

BOOL nowrun=Process32First(hpro,&pe32);

while(nowrun)

{

if(pe32szExeFile ==a)

{

DWORD proid=pe32th32ProcessID;

HANDLE hprocess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,proid);

if(hprocess!=NULL)

{

::TerminateProcess(hprocess,0);

::CloseHandle(hprocess);

}

}

nowrun=::Process32Next(hpro,&pe32);

}

}

非常高兴为您解答!

如果是10个进程,K=10,如果是最高的三个,K=3

说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)

ps -aux的输出格式如下:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 00 00 19352 1308 Ss Jul29 0:00 /sbin/init

root 2 00 00 0 0 S Jul29 0:00 [kthreadd]

root 3 00 00 0 0 S Jul29 0:11 [migration/0]

sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。

head -K(K指代行数,即输出前几位的结果)

|为管道符号,将查询出的结果导到下面的命令中进行下一步的 *** 作。

方法2:top (然后按下M,注意大写)

二、可以使用下面命令查使用CPU最多的K个进程

方法1:

ps -aux | sort -k3nr | head -K

方法2:top (然后按下P,注意大写)

用命令的方式也是很方便将结果存到变量里呀,用一个复制或者重定向就行了。

c代码:

#include <pthreadh>

#include <stdioh>

void print_xs (void unused)

{

while (1)

fputc (‘x’, stderr);

return NULL;

}

/ The main program /

int main ()

{

int i=0;

while(1){

pthread_t thread_id;

if( NULL != pthread_create (&thread_id, NULL, &print_xs, NULL)){

break;

}

i++;

}

printf("创建线程个数:%d\n",i);

return 0;

}

一般常用的命令就是ps -def 排列顺序是UDI PID 或 ps -aux 排列顺序是USER PID 以上两个命令可以使用| grep(过滤)配置使用 top命令是一个动态显示所有进程的命令

不管是js,还是falsh,flex都是在浏览器端运行的代码,肯定访问本地电脑的权限受安全限制,所以不赞成通过这个方案来解决。

可以通过js调用服务端程序比如java servlet来得到,servlet获取服务端的进程信息相比比较简单了,java可以直接调用bat或shell来得到返回的信息:

windows下可以调用tasklist得到所有的进程信息

以上就是关于C++ 如何获得当前电脑里运行的所有进程ID并关闭指定的进程全部的内容,包括:C++ 如何获得当前电脑里运行的所有进程ID并关闭指定的进程、Linux 如何查看当前占用CPU或内存最多的K个进程、Linux下 c/c++ 如何获取当前的进程信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10155009.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存