在linux里,怎样得到另一个进程的进程号

在linux里,怎样得到另一个进程的进程号,第1张

序号 列名 含义

A PID 进程id

B PPID 父进程id

C RUSER Real user name

D UID 进程所有者的用户id

E USER 进程所有者的用户名

F GROUP 进程所有者的组名

G TTY 启动进程的终端名。不是从终端启动的进程则显示为

H PR 优先级

I NI nice值。负值表示高优先级,正值表示低优先级

J P 最后使用的CPU,仅在多CPU环境下有意义

K %CPU 上次更新到现在的CPU时间占用百分比

L TIME 进程使用的CPU时间总计,单位

M TIME+ 进程使用的CPU时间总计,单位1/100秒

N %MEM 进程使用的物理内存百分比

O VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

P SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。

Q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

R CODE 可执行代码占用的物理内存大小,单位kb

S DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

T SHR 共享内存大小,单位kb

U nFLT 页面错误次数

V nDRT 最后一次写入到现在,被修改过的页面数。

W S 进程状态。

D=不可中断的睡眠状态

R=运行

S=睡眠

T=跟踪/停止

Z=僵尸进程

X COMMAND 命令名/命令行

Y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名

Z Flags 任务标志,参考 schedh

进程号也就是UNIX类OS中的,Process ID

可是Process ID的概念只有在UNIX类的 *** 作系统中才有,Java作为一种多平台的程序语言,在JDK的接口中并不提供“进程ID”(Process ID)这种OS独有的概念。

如果要结束程序,可以使用Systemexit()

如果非要得到自己的Process ID,唯一的方法就是在shell取得Process ID,然后Java在通过某种方式取得相应的Process ID。

//获取对应进程名的ID

DWORD GetSpecifiedProcessId(const char pszProcessName)

{

DWORD id;

//获得系统快照句柄 (通俗的讲, 就是得到当前的所有进程)

HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) ;

PROCESSENTRY32 pInfo; //用于保存进程信息的一个数据结构

pInfodwSize = sizeof(pInfo);

//从快照中获取进程列表

Process32First(hSnapShot, &pInfo) ; //从第一个进程开始循环

do

{

//这里的 pszProcessName 为你的进程名称

if(strcmp(strlwr(_strdup(pInfoszExeFile)), pszProcessName) == 0)

{

id = pInfoth32ProcessID ;

break ;

}

}while(Process32Next(hSnapShot, &pInfo) != FALSE);

return id; //id 就是你要的进程PID 了

}

这个代码是我从网上复制过来的 但是注释是我给加的

以后别弄个0 分放这里 真想扁你

我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。

当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。

在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。

在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如:

#!/bin/bash

echo "PID of this script: $$"

上面的脚本会得到下面的输出:

PID of this script: 6583

除了$$, bash shell还会导出其他的只读变量。比如,PPID存储子shell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如:

#!/bin/bash

echo "PID of this script: $$"

echo "PPID of this script: $PPID"

echo "UID of this script: $UID"

输出是:

PID of this script: 6686

PPID of this script: 4656

UID of this script: 1000

上面输出中,PID每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,PPID每次都会一样只要你在同一个shell中运行。

对于所有bash内置变量列表,参考man页。

$ man bash

select PSPID, sstatus, Ssid,Sserial#,Susername,Smachine,Sprogram,Sosuser,to_char(Slogon_time,'yyyy/mm/dd-hh24:mi:ss')

from v$process P,

v$session S

WHERE Paddr = Spaddr

AND saudsid = userenv('sessionid')

/

PSPID 是 *** 作系统的Process ID (UNIX)

Ssid 是Oracle的Session ID,

以上SQL只查询当前Session 的信息,

以上就是关于在linux里,怎样得到另一个进程的进程号全部的内容,包括:在linux里,怎样得到另一个进程的进程号、Java如何得到当前进程ID号、VC 如何得到进程的ID号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存