精华内容
下载资源
问答
  • windows查看进程,结束进程命令
    2018-10-23 15:40:24

    windows查看进程
    netstat –aon | findstr “端口号”
    查看进程的具体信息
    tasklist | findstr “进程号”
    结束进程
    tskill 进程号 

    更多相关内容
  • python作为一门脚本语言,其丰富的库使其能够干的事情尤其多。我们或许会有这样的需求,把python程序作为后台进程启动。也就是说,没有界面,没有终端。...windows下不支持fork,但是有另外一个概念:服务(serv...

    python作为一门脚本语言,其丰富的库使其能够干的事情尤其多。我们或许会有这样的需求,把python程序作为后台进程启动。也就是说,没有界面,没有终端。相当于linux下的一个概念:守护进程(daemon)。

    如果你的程序是跑在linux上,那么只要你理解了python os.fork的使用,就可以自己构建出一个daemon的实现。windows下不支持fork,但是有另外一个概念:服务(service)。通常我们在windows下安装一个软件的时候,如果它有后台服务的功能,那么它都会注册一个服务,比如:google更新服务、QQ音乐服务、VMWare等。通过路径:计算机 -> 管理 -> 服务和应用程序 -> 服务 可以查看服务列表。我们可以对服务进行控制:启动、停止、重启动。

    如此看来,windows下服务的概念就相当于后台进程了,它不必有界面和终端,我们可以在服务列表对其进行控制(启动、停止、重启动)。接下来,我们就来看看如何利用python实现一个服务。

    软件安装准备

    除了需要python包之外,还需要一个windows下的python库:pywin32。具体安装过程就不重述了,测试pywin32是否安装好的方法是:

    python >> import win32service

    如果无报错,则表示pywin32安装成功。

    服务类

    其核心类为win32serviceutil.ServiceFramework,代表服务的基类,实现我们自己的服务需要继承该类。

    成员变量:

    _svc_name_ = "your service name"

    _svc_display_name_ = "your service display name"

    _svc_description_ = "your service description"

    接口:

    SvcDoRun 启动该服务的回调

    SvcStop 结束该服务的回调

    一般来说,我们把程序的主逻辑放到SvcDoRun 里,程序结束的清理工作放到SvcStop 里。ServiceFramework 自己有一套对服务的控制机制,大概是如下的样子:

    install -> 调用windows服务API来安装一个服务

    remove -> 调用windows服务API来卸载一个服务

    start -> SvcDoRun

    stop -> SvcStop

    restart -> SvcStop -> SvcDoRun

    另外,在python程序的main下, 要使用pywin32的接口来指定需要通过命令行执行的类:

    win32serviceutil.HandleCommandLine(YourClass)

    实现一个服务类

    import win32service

    import win32serviceutil

    import win32event

    class PySvc(win32serviceutil.ServiceFramework):

    # you can NET START/STOP the service by the following name

    _svc_name_ = "ServicePython"

    # this text shows up as the service name in the Service

    # Control Manager (SCM)

    _svc_display_name_ = "ServicePython Service"

    # this text shows up as the description in the SCM

    _svc_description_ = "This service writes stuff to a file"

    def __init__(self, args):

    win32serviceutil.ServiceFramework.__init__(self,args)

    # create an event to listen for stop requests on

    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)

    # core logic of the service

    def SvcDoRun(self):

    import servicemanager

    self.start()

    win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)

    # called when we're being shut down

    def SvcStop(self):

    # tell the SCM we're shutting down

    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)

    # fire the stop event

    win32event.SetEvent(self.hWaitStop)

    self.stop()

    def start(self):

    pass

    def stop(self):

    pass

    这里我们定义一个类PySvc,并提供了两个接口 start和stop。使用的时候,我们只需继承该类,并重写start和stop接口即可。如下的一个实例:

    class MyS(PySvc):

    def start(self):

    logger.debug('my starting ..... ')

    def stop(self):

    logger.debug('my stopping ....')

    if __name__ == '__main__':

    win32serviceutil.HandleCommandLine(MyS)

    这样以来,我们可以进行以下操作了:

    安装服务: python svc.py install

    启动服务: python svc.py start

    关闭服务: python svc.py stop

    重启服务: python svc.py restart

    卸载服务: python svc.py remove

    展开全文
  • 进程树退出检测程序

    2019-01-02 08:54:56
    自己写的一个进程树监控程序,当进程树下所有进程退出后,此进程才会退出。 由于是随手写的程序,稳定性不敢保证,请勿使用到生产环境中,谨慎使用手中积分。 此程序从EasyHook Demo:FileMonitorHook 修改获得的。
  • windows下关闭进程树

    千次阅读 2018-12-11 09:55:00
    关闭进程树,需要遍历给定进程下的所有子进程,这个过程可以用并查集来做。  1、编写获取进程父进程的代码   #define ProcessBasicInformation 0 typedef struct { DWORD ExitStatus; DWORD ...

      关闭进程需要特定权限,如果你程序权限不够也会导致关闭进程失败。关闭进程树,需要遍历给定进程下的所有子进程,这个过程可以用并查集来做。

        1、编写获取进程父进程的代码

        

    #define ProcessBasicInformation 0  
    
    typedef struct  
    {  
        DWORD ExitStatus;  
        DWORD PebBaseAddress;  
        DWORD AffinityMask;  
        DWORD BasePriority;  
        ULONG UniqueProcessId;  
        ULONG InheritedFromUniqueProcessId;  
    }   PROCESS_BASIC_INFORMATION;  
    
    typedef LONG (__stdcall *PROCNTQSIP)(HANDLE,UINT,PVOID,ULONG,PULONG);
    
    DWORD GetParentProcessID(DWORD dwProcessId)
    {
        LONG                        status;
        DWORD                        dwParentPID = (DWORD)-1;
        HANDLE                        hProcess;
        PROCESS_BASIC_INFORMATION    pbi;
    
        PROCNTQSIP NtQueryInformationProcess = (PROCNTQSIP)GetProcAddress(  
            GetModuleHandle("ntdll"), "NtQueryInformationProcess"); 
    
        if(NULL == NtQueryInformationProcess)
        {
            return (DWORD)-1;
        }
        // Get process handle
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE, dwProcessId);
        if (!hProcess)
        {
            return (DWORD)-1;
        }
    
        // Retrieve information
        status = NtQueryInformationProcess( hProcess,
            ProcessBasicInformation,
            (PVOID)&pbi,
            sizeof(PROCESS_BASIC_INFORMATION),
            NULL
            );
    
        // Copy parent Id on success
        if  (!status)
        {
            dwParentPID = pbi.InheritedFromUniqueProcessId;
        }
    
        CloseHandle (hProcess);
    
        return dwParentPID;
    
    }
    View Code

     

          2、并查集find的代码

        

    DWORD FindParentPID(std::map<DWORD,DWORD>& mapPPID,DWORD dwParentPID)
    {
        if(mapPPID.find(dwParentPID) == mapPPID.end() || mapPPID[dwParentPID]==dwParentPID)
            return dwParentPID;
        DWORD root = FindParentPID(mapPPID,mapPPID[dwParentPID]);
        mapPPID[dwParentPID] = root;
        return root;
    }

     

          3、通过进程id来结束进程树代码

      

    BOOL StopProcessTree(DWORD dwProcessID)
    {

        HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        PROCESSENTRY32 info;
        info.dwSize = sizeof(PROCESSENTRY32);
        Process32First(handle, &info);
        std::map<DWORD,DWORD> mapPID; //key为进程id,val为根进程id。
        while (Process32Next(handle, &info) != FALSE)
        {
          DWORD dwPPID= GetParentProcessID(info.th32ProcessID); //找直接上一级的父进程
          if(info.th32ProcessID == dwProcessID)
          {
            mapPID[dwProcessID] = dwProcessID;
          }
          else if(dwPPID != (DWORD)-1)
          {
            mapPID[info.th32ProcessID] = dwPPID;
          }
        }
        ::CloseHandle(handle);

     
      

        BOOL bRet = TRUE;
        //使用并查集原理优化查询特定进程的进程树效率。
        for(std::map<DWORD,DWORD>::iterator iter = mapPID.begin();iter != mapPID.end();iter++)
        {
          DWORD dwTempPID = iter->first;
          if(FindParentPID(mapPID,dwTempPID)==dwProcessID)
          {
            HANDLE hProcess= OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwTempPID);
            bRet = TerminateProcess(hProcess,0)?bRet:FALSE;
            ::CloseHandle(hProcess);
          }
        }

        return bRet;

    }

     

               4、通过进程名来结束进程树

    BOOL StopProcessByName(LPCTSTR pszProcessName)
    {
            HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
            PROCESSENTRY32 info; 
            info.dwSize = sizeof(PROCESSENTRY32); 
            Process32First(handle, &info); 
            BOOL bRet = TRUE;
            while (Process32Next(handle, &info) != FALSE) 
            {
                CString csProcessName = pszProcessName;
                CString csExeFile = info.szExeFile; 
                if(csExeFile.CompareNoCase(csProcessName)==0)
                {
                    StopProcessTree(info.th32ProcessID);
                    break;
                }
            }
            ::CloseHandle(handle);
            return bRet;
    }

     

    转载于:https://www.cnblogs.com/jlyg/p/10100597.html

    展开全文
  • 一、tasklist 查看进程 1、"tasklist" 命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具,带有多个执行参数。类似Linux系统的ps命令 2、显示结果由五部分组成:映像名称(进程名)、PID、会话...

    一、tasklist 查看进程

            1、"tasklist" 是用来显示运行在本地或远程电脑上所有进程的命令行工具,带有多个执行参数,似Linux系统的ps命令;
            2、显示结果由五部分组成:映像名称(进程名)、PID、会话名、会话#、内存使用;
            3、tasklist /? 可查看命令帮助;

    二、查看本机所有进程

            tasklist

    三、根据 pid 查询指定进程

            tasklist | findstr 1306

    四、查看远程所有进程

            # 查看到IP地址为218.22.123.26的远程系统的进程;
            # 其中/s参数后的“218.22.123.26”指要查看的远程系统的IP地址;
            # /u后的“admin”指Tasklist命令使用的用户账号,它必须是远程系统上的一个合法账号;
            # /p后的“123456”指admin账号的密码;
            # 查看远程系统的进程时,需要远程机器的RPC服务的支持,否则,该命令不能正常使用;
            tasklist /s 218.22.123.26 /u admin /p 123456

    五、Taskkill 终止进程

        1、根据进程 PID 结束:

             taskkill /pid 1306

        2、根据进程 名称 结束:

            taskkill /im "cmd.exe"

    六、强制结束进程

        1、根据进程 PID 强制结束:

             taskkill /f /pid 1306

        2、根据进程 名称 强制结束:

            taskkill /f /im "cmd.exe"

    七、结束进程树

             # 一个程序开启后,可能会出现不止一个进程,还会有子进程,此时则可采用结束进程树的方式,全部结束掉;
             taskkill /t /pid 1306

    展开全文
  • Windows平台 C++进程树获取实现

    千次阅读 2018-03-23 13:47:55
    最近在写一个小项目,涉及到查找和结束进程树的功能实现,通过系统API能够获取到的信息有进程名,进程ID,父进程ID等,所以通过一个递归操作可以获取到一棵完整的进程树。但由于进程ID是系统随机给予的,并没有什么...
  • 结束系统进程的方法可以在任务管理器中进行,也可以在管理员命令提示符窗口中使用Tskill 命令结束进程。下面介绍Windows 10结束在运行中卡死的系统进程的方法。方法一:在任务管理器中结束运行中卡死的系统进程以...
  • 网上的方法几乎99%的都无法使用,亲测win7——32,64有效,画面不闪,无论是结束进程还是结束进程树都无法关闭,可编译AnyCpu,具体用法参考代码。三行代码解决你的需求。
  • 不小心将explorer.exe结束进程
  • windows环境下编码开发经常遇到端口占用问题,解决时需要找到对应进程杀掉,释放占用。自己常用的几项操作命令如下: 首先,打开Windows的命令窗口,键盘 win + R,输入cmd,回车。 1.查询端口被占用的进程...
  • 深入解析windows XP/2003:查看进程树

    千次阅读 2009-11-13 15:18:00
    windows调试工具箱中使用tilist.exe的/t开关,显示进程树。 Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.C:/Program Files/Debugging Tools for Windows (x86)>tlist /tSystem ...
  • Linux学习之打印进程树

    千次阅读 2021-04-28 22:14:24
    继续Linux的学习,操作系统学到了Linux系统下的进程结构,布置了一个作业是打印进程树,来加深一下对Linux进程的理解。 虚拟主机 主机:联想Y7000P;64位windows10;CPU:i7-9750H;显卡:GTX 1660 Ti;内存:16G ...
  • Windows进程父子关系小实验

    千次阅读 2017-08-30 16:30:48
    Windows进程A创建了另一个进程B,那么进程A就是进程B的父进程,B就是A的子进程。   在每一个进程的内存数据结构中,只保存了其父进程的Pid(Parent ProcessId),即使父进程被关闭了,这个存储父进程Pid的字段...
  • 【实用】Windows删除进程的方法

    千次阅读 2019-09-11 10:02:07
    /p 指定端口 /f 强制执行 /t 杀死进程树 使用管理员权限打开命令行之后,使用该命令……然而: 提示错误:无法终止pid … (属于PID…子进程)的进程。 原因:没有此任务的实例在运行。 OK,估计是...
  • 打开cmd,输入tasklist就会显示当前...我是利用taskkill -f -im 进程名.exe 结束进程。https://blog.csdn.net/amars_ding/article/details/54581487Qt中编写代码结束进程 QStringList params; params&lt;&lt...
  • 某天干了一个蠢事,自己写了一个结束指定进程的 bat 脚本文件, taskkill /f /im explorer.exe 哈哈,一运行,就感觉到了眼前的黑暗。 此时,请不要着急。准备你的双手,按照如下做法: 1、Ctrl + Shift + Esc ,弹...
  • Windows 进程 Tasklist查看 与 Taskkill结束

    万次阅读 多人点赞 2018-07-05 11:02:19
    目录 Tasklist 简述 .../t 结束进程树 Tasklist 简述 1、"Tasklist"命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具,带有多个执行参数。类似Linux系统的ps命令 2、显示...
  • 进程和进程树

    千次阅读 2012-09-11 09:03:28
     结束进程树 比如,在Windows XP的“运行”对话框中输入“cmd”启动命令行控制台,然后在命令行中输入“notepad”启动记事本。现在,命令行控制台进程“cmd.exe”和记事本进程“notepad.exe”就组成了一个进程树,...
  • Windows创建进程

    千次阅读 2017-06-04 17:59:55
    16位的应用程序是以DOS虚拟机或Win32上的Windows(WOW) 为进程的方式运行。 lpCommandLine: 指向一个NULL结尾的、用来指定要运行的命令行。 这个参数可以为空,那么函数将使用参数指定的字符串当作要运行的...
  • 当手误不小心把任务管理器中的Windows资源管理器进程结束任务后,电脑出现黑屏时,想要重新恢复,该怎么做? 步骤一: 按Ctrl+Shift+Esc来启动任务管理器; 步骤二: 点击任务管理器界面中的“文件”,点击“运行新...
  • Windows下创建进程-CreateProcess()

    千次阅读 2019-06-25 15:47:54
    ...CreateProcess是Windows下用于创建进程的API函数,用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。 函数原型: BOOL CreateProcess ( LPCTSTR lpApplicationName,...
  • 任务管理器无法结束进程解决办法

    万次阅读 2015-05-07 17:10:41
    到无法关闭的程序,我们第一个想法就是进入任务管理器进行关闭进程,但是...方法一、用system权限来结束进程这种方法的根本思路是,用system的权限来运行任务管理器taskmgr.exe,取得system权限后就可以结束任何进程
  • C#关闭进程树

    千次阅读 2010-09-20 14:46:00
    Windows task manager中"End Process" & "End Process Tree"分别对应kill掉一个单独的进程和一个进程树。关闭一个进程树,与之所有相关的进程也被关闭了;通常,Windows task manager中关闭一个父进程,其子进程不会...
  • 1.此工具是本人学习Windows内核的一个产物,界面层采用MFC编写,驱动层采用WDK7600编译。 2.此工具90%以上的功能都是在内核驱动中实现,Ring3层程序只做展示结果之用。虽然本人已经在诸多环境中做过严格的测试,但也...
  • Windows系统中,我们可以很简单的通过任务管理器来查看进程并对进程进行管理,如结束等操作,那么如果是linux呢?相信一些初学者还不知道如何在linux中查看进程和管理,这里KK小编给大家准备了相关知识,有需要的...
  • windows查看文件被哪个进程占用

    万次阅读 2019-08-03 09:56:36
    1.看下图,在“资源监视器”界面中,点击第二个选项卡“CPU”。在“关联的句柄”右侧搜索框内输入文件名称,点击... 3.然后根据进程来判断是哪个程序,关闭程序或结束进程后就可以重命名文件了。如上图所示 ...
  • 如何等待进程树结束

    千次阅读 2014-03-18 09:28:08
    我们通常使用的WaitForSingleObject只能等待一个进程结束,如果进程中间又发起了另外一个进程,我们如何知道那个进程结束?...这样,我们就可以通过Job来跟踪整个的进程树了。 示例代码: #include "stdafx.h
  • windows操作系统下,Qt程序需要退出时或者某些时刻杀死当前进程或者指定PID进程时,可以采用windows下的cmd命令TASKKILL 指令,并采用Windows下API 接口函数:WinExec()函数 具体代码如下: #include <windows.h...
  • //检索系统所有进程 void showall() { PROCESSENTRY32 pe32 = {0}; pe32.dwSize = sizeof(pe32); //查找进程 HANDLE hpprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//CreateToolhelp32Snapshot...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,043
精华内容 14,017
关键字:

windows结束进程树