获取进程名称

本文介绍了一段用于枚举系统中所有进程并获取每个进程的模块文件路径的C++代码实现。通过使用EnumProcesses和GetModuleFileNameEx API函数,可以实现跨进程的模块路径查询,展示了如何打开进程、获取错误信息以及关闭句柄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要注意的是:GetModuleFileNameEx与GetModuleFileName的区别,前者可查找指定进程以及指定进程指定模块路径,后者只能查找当前进程的模块路径

<think>我们正在使用psutil库来获取进程名称。根据引用[2],psutil提供了丰富的进程信息获取功能。 在psutil中,每个进程由一个Process对象表示。我们可以通过Process对象的name()方法获取进程名称,或者通过cmdline()方法获取启动命令(可能包含完整路径和参数)。 具体步骤如下: 1. 首先获取进程的pid(进程ID),或者我们可以遍历所有进程。 2. 使用psutil.Process(pid)来创建一个进程对象。 3. 调用进程对象的.name属性或.name()方法(注意:在psutil中,name是一个属性,但也可以作为方法调用?实际上,在较新版本中,它通常作为属性访问,但为了兼容性,我们也可以使用函数形式,不过官方推荐使用属性形式)。 但是,根据psutil文档,进程名称可以通过`name`属性获取,例如`process.name`。 另外,引用[3]中提到,在Linux系统中也可以通过读取`/proc/<pid>/cmdline`来获取进程名称,但使用psutil库可以跨平台,更简单。 因此,我们使用psutil的方法如下: 示例代码: 获取当前进程名称: import psutil current_process = psutil.Process() print(current_process.name()) 获取指定pid的进程名称: import psutil pid = 1234 # 替换为实际pid try: p = psutil.Process(pid) print(p.name()) except psutil.NoSuchProcess: print("进程不存在") 此外,我们也可以遍历所有进程: for proc in psutil.process_iter(['name']): print(proc.info['name']) 注意:在psutil 5.0.0之后,process_iter可以传入属性列表,这样在迭代时只获取指定的属性,效率更高。 因此,用户可以根据需要选择使用Process对象直接获取,或者通过迭代器获取。 关于引用[2]中提到的内容,它主要说明了psutil中一些返回枚举的API,但并没有直接提到name属性,不过name属性是Process对象的基本属性。 根据以上分析,我们给出使用psutil获取进程名称的几种方法。</think>要使用 `psutil` 库获取进程名称,可以通过以下方法实现: ### 方法 1:通过进程 ID (PID) 获取 ```python import psutil # 指定目标 PID (例如 1234) pid = 1234 try: process = psutil.Process(pid) print(f"进程名称: {process.name()}") # 获取进程名 print(f"完整命令行: {process.cmdline()}") # 获取启动命令及参数 except psutil.NoSuchProcess: print(f"PID {pid} 不存在") ``` ### 方法 2:遍历所有进程 ```python import psutil # 获取所有进程信息 for proc in psutil.process_iter(['pid', 'name']): print(f"PID: {proc.info['pid']}, 名称: {proc.info['name']}") ``` ### 关键说明: 1. **`name()` 方法** 返回进程的简短名称(不含路径),例如 `python` 或 `chrome`。 2. **`cmdline()` 方法** 返回启动进程的完整命令及参数列表(如 `['/usr/bin/python', 'app.py']`),可通过 `cmdline()[0]` 获取完整路径[^2]。 3. **异常处理** 使用 `try-except` 捕获 `NoSuchProcess` 异常,避免进程已终止导致的错误。 ### 对比系统原生方法 与直接读取 `/proc/<pid>/cmdline`(引用[3])相比,`psutil` 的优势在于: - 跨平台支持(Windows/Linux/macOS) - 无需手动解析系统文件 - 提供统一简洁的 API > 示例输出: > `进程名称: python` > `完整命令行: ['/usr/bin/python', 'main.py']`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值