linux中如何根据PID获得进程

linux中如何根据PID获得进程,第1张

ps

-p

"1

2"

将会只选出pid是1和2的进程

ps

-p

444

将会只选出pid是444的进程

也就是说,通过-p来指定pid即可,可以指定单个,也可以指定多个pid的列表,就看你的需求了

在一个线程中每隔一秒钟(用事件等待),计算一下当前进程cpu占用率: 下面以间隔一次进行计算: pt1 = GetProcessTimes();//(第一次) pt2 = GetProcessTimes();//(第二次) st1 = GetSystemTime();//(第一次) st2 = GetSystemTime();//(第二次) cpu_usage = (pt2-pt1)/(st2-st1) 通常如果是多个cpu cpu_usage /= cpu_count;

用管道:

通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息,

读帮助”man popen":

char cmd = "ps -ef";

FILE ptr;

if ((ptr = popen(cmd, "r")) != NULL)

while (fgets(buf, n, ptr) != NULL)

(void) printf("%s ",buf);

UID PID PPID C STIME TTY TIME CMD

root 0 0 0 Sep-30 00:00:01 sched

root 1 0 0 Sep-30 00:00:06 /etc/init -a

root 2 0 0 Sep-30 00:00:00 vhand

root 3 0 0 Sep-30 00:00:27 bdflush

root 4 0 0 Sep-30 00:00:00 kmdaemon

root 5 1 0 Sep-30 00:00:50 htepi_daemon /

root 6 0 0 Sep-30 00:00:00 strd

root 2941 1 0 Oct-08 tty01 00:00:00 /bin/login ccb

root 43 1 0 Oct-08 00:00:02 /etc/syslogd

root 47 1 0 Oct-08 00:00:00 /etc/ifor_pmd

root 48 47 0 Oct-08 00:00:13 /etc/ifor_pmd

root 36 1 0 Oct-08 00:00:00

版本 2

支持库 eAPI

子程序 _取系统进程列表按钮_被单击

局部变量 系统进程, 进程信息, , "0"

局部变量 记次循环变量, 整数型

系统进程 = 取系统进程列表 ()

列表框1清空 ()

计次循环首 (取数组成员数 (系统进程), 记次循环变量)

列表框1加入项目 (系统进程 [记次循环变量]进程名称 + “ ” + 到文本 (系统进程 [记次循环变量]进程标识符), )

计次循环尾 ()

列表框1选择项目 (0, )

已经发到你邮箱

窗体上添加一个 text 一个按钮 只需在text中输入进程名单击一下按钮 就可以

只需要三个api

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Private Type PROCESSENTRY32

dwSize As Long

cntUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

cntThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String 1024

End Type

Const TH32CS_SNAPHEAPLIST = &H1

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPTHREAD = &H4

Const TH32CS_SNAPMODULE = &H8

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

Const TH32CS_INHERIT = &H80000000

Dim pid As Long

Dim pname As String

Dim a As String

Private Sub Command1_Click()

a = Trim(LCase(Text1))

Dim my As PROCESSENTRY32

Dim l As Long

Dim l1 As Long

Dim flag As Boolean

Dim mName As String

Dim i As Integer

l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

If l Then

mydwSize = 1060

End If

If (Process32First(l, my)) Then '遍历第一个进程

Do

i = InStr(1, myszExeFile, Chr(0)) '返回chr(0)在各个进程中出现的位置

mName = LCase(Left(myszExeFile, i - 1)) '返回小写的(返回i-1的前n个字符,即正确的名称)

If mName = a Then

pid = myth32ProcessID

Text1 = Text1 & "的pid是 " & "---" & pid

End If

Loop Until (Process32Next(l, my) < 1)

End If

End Sub

如果是找出java程序的进程PID,pidof就无能为力了,可以使用ps -ef|grep java或jps -l来查看java进程的信息。通常找出进程PID的目的是确认程序是否在运行、或者为了把它杀掉、或者发送一个信号给它。常用参数格式:pidof program

找出program程序的进程PID,如果有多个就会全部列出,program不能是shell脚本名称。

格式:pidof -s program

找出program程序的进程PID,只列出一个。(Single shot - this instructs the program to only return one pid)

格式:pidof -x script

找出shell脚本script的进程PID。

参数:-o omitpid

参数:-o omitpid1 -o omitpid2

在列出的进程PID中忽略omitpid。可以有多个。参数:-s只列出一个。

以上就是关于linux中如何根据PID获得进程全部的内容,包括:linux中如何根据PID获得进程、怎么获取指定PID之进程的CPU占有率、如何获取linux下的进程pid列表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存