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列表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)