linux下,有没有方法可以用脚本实现通过进程名获取PID号

linux下,有没有方法可以用脚本实现通过进程名获取PID号,第1张

例如要取vsftpd对应的进程号:

ps -ef|grep vsftpd|grep -v grep|awk '{print $2}'

需要注意会不会有多个匹配这个名字的进程返回

已知进程名称或PID,是无法准确定位窗体句柄的。

这是因为:一旦程序启动后,系统只分配给它一个PID,而一个程序往往有多个窗口。所以,要想从PID反向查找对应的窗口不具有唯一性,并已经过实践证明,往这方面研究只能走入死胡同。

解决此问题办法是:先枚举所有窗口句柄,然后取得对应的进程名称或PID,如果该进程或PID满足你的条件,则可以进行相应处理。

AppActivate 可以根据窗口的标题来激活 也可以PID 枚举进程PID代码 百度下一堆 就不贴了

Dim MyAppID, ReturnValue

AppActivate "Microsoft Word" ' 激活 Microsoft

' Word。

' AppActivate 也可利用 Shell 函数的返回值。

MyAppID = Shell("C:\WORD\WINWORDEXE", 1) ' 运行 Microsoft Word。

AppActivate MyAppID ' 激活 Microsoft

' Word。

' 您也可使用 Shell 函数的返回值。

ReturnValue = Shell("c:\EXCEL\EXCELEXE",1) ' 运行 Microsoft Excel。

AppActivate ReturnValue ' 激活 Microsoft

' Excel。

这个和C程序没关系。所有WINDOWS程序都可以用命令行启动

比如你从WINDOWS界面选择开始菜单->运行,然后输入一个命令行

notepad

就会启动记事本程序。但是如果输入

notepad c:\logtxt

那么就会在c:盘根目录下建立一个logtxt文件(保存后生成)。后面的这个参数相当于notepad程序的命令行

具体你的程序adv32win在运行时,如果输入开始->运行:

adv32win abcscript c:\ c:\ c:\

就可执行了(当然,看你安装时的位置目录,以及脚本名称到底是什么)

查看方法:

打开设备管理器,右键USB设备--属性--详细信息--设备范例id。

根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的VID是唯一的,PID由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂家的不同设备。

VID和PID通常情况下有两种存储方式,

第一种是主控生产商的VID和PID,存储在主控的bootcode中;

第二种是设备生产商的VID和PID,该VID和PID存储在主控外部的非易失性存储设备中(EEPROM或Flash)的设备固件中,当USB设备连接主机时,如果固件中有设备生产商的VID和PID,会将该VID和PID报告给主机,而忽略主控生产商的VID和PID。

所以理论上一个USB存储设备的VID应该是设备生产商的VID,而不是主控生产商的VID,这两个VID应该是不同的(主控生产商自己生产的设备除外)。

由于VID和PID重复并不会对产品的使用带来严重影响,很多USB设备生产商(山寨厂居多)为了方便,并不会向USB执行论坛申请自己的VID,而是依然沿用主控生产商的VID或随便向产品写入VID和PID;

同时,正规厂家只需要申请VID,PID由厂家自行确定,所以存在相同型号的产品,可能采用了不同的主控(商业需要,很正常),而的PID是一样的,基于上述原因通过VID和PID就不能准确识别USB设备的主控型号,这个问题大家在使用USB设备的过程中需要注意。

#-- encoding:UTF-8 --

import os

import sys

import string 

import psutil

import re

def get_pid(name):

process_list = psutilget_process_list()

regex = "pid=(\d+),\sname=\'" + name + "\'"

print regex

pid = 0

for line in process_list:

    process_info = str(line)

    ini_regex = recompile(regex)

    result = ini_regexsearch(process_info)

    if result != None:

        pid = stringatoi(resultgroup(1))

        print resultgroup()

        break

def main(argv):<br>name = argv[1]<br>get_pid(name)

if __name__ == "__main__":

main(sysargv)

以上就是关于linux下,有没有方法可以用脚本实现通过进程名获取PID号全部的内容,包括:linux下,有没有方法可以用脚本实现通过进程名获取PID号、vB 通过进程名称获取窗体句柄、VB 根据进程PID 激活窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/10628169.html

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

发表评论

登录后才能评论

评论列表(0条)

保存