linux获取进程id和进程名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux获取进程id和进程名称相关的知识,希望对你有一定的参考价值。

参考技术A linux获取进程id和进程名称作为一个共享库,应该需要统计使用本库的各种应用程序的使用频率,使用方法等信息。才能针对主要应用做出更好的改进。
www.dnjsb.com
那么就需要记录调用者的进程id或者进程名称,并且保存下来。保存的动作可以采用共享内存,也可以采用文件,这个在下篇博文描述,本文描述如何获取进程id和进程名称。范例:#include
<stdio.h>#include
<unistd.h>#define
CFGMNG_TASK_NAME_LEN
256int
main()
int
ret;
char
ac_tmp[CFGMNG_TASK_NAME_LEN];
ret
=
cfgmng_get_taskname(ac_tmp,
CFGMNG_TASK_NAME_LEN);
if
(0
!=
ret)

printf(Call
cfgmng_get_taskname
fail./n);
return
-1;

printf(The
running
task
name
is
%s./n,
ac_tmp);
return
0;int
cfgmng_get_taskname(char
*ac,
int
len)
int
count
=
0;
int
nIndex
=
0;
char
chPath[CFGMNG_TASK_NAME_LEN]
=
0;
char
cParam[100]
=
0;
char
*cTem
=
chPath;
int
tmp_len;
pid_t
pId
=
getpid();
sprintf(cParam,/proc/%d/exe,pId);/*
printf(cParam
=
%s./n,
cParam);*/
count
=
readlink(cParam,
chPath,
CFGMNG_TASK_NAME_LEN);/*
printf(count
=
%d./n,
count);*/
if
(count
<
0
||
count
>=
CFGMNG_TASK_NAME_LEN)

printf(Current
System
Not
Surport
Proc./n);
return
-1;

else

nIndex
=
count
-
1;
for(
;
nIndex
>=
0;
nIndex--)

if(
chPath[nIndex]
==
'/'
)//筛选出进程名

nIndex++;
cTem
+=
nIndex;
break;



tmp_len
=
strlen(cTem);
if
(0
==
tmp_len)

printf(Get
task
fail./n);
return
-1;

if
(len
<=
tmp_len
+1)

printf(len(%d)
is
less
than
taskname(%s)'s
len./n,
len,
cTem);
return
-1;

strcpy(ac,
cTem);
return
0;从上面的实验范例可以看出,主要使用的函数是getpid获取本进程的id,再到/proc/pid/exe
中去找到对应的进程名称。在/proc目录中有很多跟进程相关的东西,都可以用这种方法触类旁通地实现。

Linux运维必知:如何从其 PID 中查找进程名称

如果您知道进程的名称,则可以使用 ps 命令轻松获取其进程 ID (PID):

ps -p PID -o comm=

ps 命令用于进程相关的操作,在上面的命令中,-p PID提供进程 ID 并-o comm=要求它输出与给定 PID 关联的命令。

这是一个实际的例子:

老实说,很难记住奇怪的ps -p PID -o comm=语法,如果是这种情况,您可以查看 ps 命令的手册页或使用其他方式获取详细信息。

您可以使用 ps 命令或 top 命令列出所有正在运行的进程,并根据需要记下进程 ID 和进程名称。

如果您知道 PID,则可以简单地使用 grep 命令过滤输出并获取该 PID 的详细信息:

ps aux | grep PID

但如下图所示,输出提供了其他详细信息以及进程名称。

如果您手动阅读它,那不是问题,但是,如果您必须在脚本中使用它,这可能是个问题。

ps -p PID -o comm=是更好的命令。

有一个名为的专用命令pidof,如果您知道确切的进程名称,则可以像这样使用它:

pidof exact_process_name

以上是关于linux获取进程id和进程名称的主要内容,如果未能解决你的问题,请参考以下文章

已知进程ID,如何获取进程名称 以及路径。

Android怎么获取进程Id

linux查看进程id命令(linux查看进程id)

如何获取子进程的输出

Linux运维必知:如何从其 PID 中查找进程名称

Win7 下DELPHI如何通过进程名获取路径