进程的监听

一.进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础

C++监听进程状态:首先加载#include "tlhelp32.h"头文件

主要函数:CreateToolhelp32Snapshot(

          DWORD dwFlags, //用来指定“快照”中需要返回的对象,可以是TH32CS_SNAPPROCESS等

          DWORD th32ProcessID //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0

          );

dwFlags:

指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。

TH32CS_INHERIT - 声明快照句柄是可继承的。

TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程

TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。

TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。

TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。

TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程

Const TH32CS_SNAPHEAPLIST = &H1

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPTHREAD = &H4

Const TH32CS_SNAPMODULE = &H8

Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

Const TH32CS_INHERIT = &H80000000

th32ProcessID:

指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE

代码:

#include "stdafx.h"
#include "Windows.h"
#include "tlhelp32.h"
#include "process.h"

void main()
{
    //获取进程信息快照,如果要获取进程列表则第二个参数为0
    HANDLE handle;
    while(1)
    {
        handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //获取线程列表
        if(handle == INVALID_HANDLE_VALUE)
        {
            cout<<"CreateToolhelp32Snapshot start is fail..."<<endl;
            getchar();
            return ;
        }
        cout<<"监听开始..."<<endl;
        PROCESSENTRY32 pe32;
        pe32.dwSize = sizeof(PROCESSENTRY32);

        //获取第一个进程的句柄
        BOOL bMore = Process32First(handle,&pe32);  //获取第一个线程句柄放到pe32
        int i = 0;
        cout<<"PID\t线程数\t进程名字"<<endl;

        while(bMore)
        {
            wchar_t *ch = pe32.szExeFile;   //szExeFile Window下的宽字节
            cout<<pe32.th32ProcessID<<"\t"<<pe32.cntThreads<<"\t";
            wcout<<ch<<endl;  //输出的时候注意
            //如果用printf则需要用wprintf(L"%s\n",ch);
            i++;
            bMore = Process32Next(handle,&pe32);
        }
        CloseHandle(handle);
        Sleep(500);  //线程挂起500ms
        system("cls");
    }

    getchar();
    return;
}

显示结果:

时间: 2024-10-24 23:41:12

进程的监听的相关文章

网络:多个进程能否监听同一个端口号?

我们都知道socket是网络上两个进程之间的双向通信链路, 即 socket = <A进程的IP地址:端口号,B进程的IP地址:端口号> 那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么? 根据Unix网络编程中的知识可知,服务端监听一个端口会经历: 1.根据套接字类型(Ipv4,Ipv6等)创建套接字socket 2.将套接字bind绑定到具体的网络地址和端口号 3.调用listen开始在这个套接字上进行监听. Unix提供了一个接口setsockopt()可以在bin

java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中

1.项目介绍: 由于大数据部门涉及到其他部门将数据传到数据中心,大部分公司采用的方式是用json文件的方式传输,因此就需要编写服务端和客户端的小程序了.而我主要实现服务端的代码,也有相应的客户端的测试代码.这里须有一个需要提到的是,我在实现接收json文件的同时,而且还需将数据写到hbase中.写入到hbase当中采用的是批量插入的方式,即一次插入多条记录. 好了,有了前面的说明,下面来简单的说一下我实现的服务端的小程序把. 2.为了实现服务端能够监听客户端的行为,因此我在服务端采用多线程的技术

【C/C++】多进程:父进程监听子进程状态 wait()的使用

文章结构: wait能力介绍 wait()函数讲解 示例代码及操作演示 wait能力介绍 在上一篇[C/C++]多进程:子进程的创建fork()中演示了子进程的创建. 创建子进程后,父进程具有监听子进程的运行状态的能力,用到的函数为: #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); 以上函数用于等待子进程子进程的状态变化回调并且获取状态变化信息.

设置IIS服务器监听特定IP的特定端口(IIS与IHS或Apache共存的解决方案)

在灾难恢复的试验中,遇到了一个IIS无法启动的情况,会报如下的错误: "The network location cannot be reached, xxxxxx" 要知道,Windows报的这种弹窗错误,也只能通过Windows自带的事件管理器里查看了.直接运行:eventvwr,打开SYSTEM项,一个大大的错误映入眼帘: 所以错误就很明显了,没有把我们的新地址添加到监听列表里... 根据搜索,发现仅仅用IIS的图形界面工具,似乎无法让IIS去监听某一个IP地址的某个端口,必须要

erlang如何有效监听大量并发连接

看了erlang的一些开源网络框架RabbitMQ.Ranch,他们都使用多个进程同时accept一个socket.这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid). 所以问题来了,erlang多个进程同时监听一个socket安全吗? 这种方式在早期的erlang是不安全的,但R11B03 版本之后,erla

《转载》IOS高级开发~开机启动&amp;无限后台运行&amp;监听进程

非越狱情况下实现: 开机启动:App安装到IOS设备设备之后,无论App是否开启过,只要IOS设备重启,App就会随之启动: 无限后台运行:应用进入后台状态,可以无限后台运行,不被系统kill: 监听进程:可获IOS设备运行除系统外的App(包括正在运行和后台运行): 配置项目 plist文件 添加: <key>UIBackgroundModes</key> <array> <string>voip</string> </array>

iptables 完成联网控制 (续) ,独立native进程监听。

上一篇:http://www.cnblogs.com/oscar1011/p/5243877.html 之前做的iptables 来进行的联网控制,一直耿耿于怀,想要知道系统里的netd等等是如何做到执行那些命令,并能监听的. 最近有机会又对这部分进行了一些研究. 所要做的大概就是3部分,1. native进程,这部分得用c/c++来写,   2. framework接口.用于和native进程通信.   3. selinux权限配置,主要就是为了赋予natvie进程 framework与nat

python监听windows上w3wp进程,如果cpu&gt;=95%则自动kill掉

因为最近服务器前端虽然加了负载均衡,但是后端windows主机偶尔还有因为服务进程cpu到99这种情况导致服务不可用,虽然这个不用第一时间处理,但是也需要手工登录进行进程的kill,windows下可以通过dos脚本写个.bat脚本实现这个功能,并通过配置调用这个.bat脚本,但是我试过几次感觉不太适合我 所以通过python写一个脚本并用py2exe转换成.exe程序放在几台windows上,因为不可能每台server都手工部署下python环境. 代码如下: import psutil im

【android学习】安卓设备实现触摸事件的监听,跨进程事件注入

最近想实现触摸屏的事件记录,并且分别做时间戳标记,类似于adb shell 下的getevent/setevent,查了很多资料,下面是一些总结. 实现方法: 1.利用onclick方法等.这种方法只能用于自己的Activity和View中,如果要检测其他Activity,比如键盘就不行了. 2.从linux内核入手.在事件分发前截获事件,可以对任意Activity实现事件捕获. android触摸事件的流程: http://blog.csdn.net/sunnyfans/article/det