获取进程id linux,linux获取进程id和进程名称

linux获取进程id和进程名称

作为一个共享库,应该需要统计使用本库的各种应用程序的使用频率,

使用方法等信息。才能针对主要应用做出更好的改进。

www.2cto.com

那么就需要记录调用者的进程id或者进程名称,并且保存下来。

保存的动作可以采用共享内存,也可以采用文件,这个在下篇博文描述,

本文描述如何获取进程id和进程名称。

范例:

#include

#include

#define CFGMNG_TASK_NAME_LEN 256

int 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目录中有很多跟进程相关的东西,都可以用这种方法触类旁通地实现。

http://www.dengb.com/Linuxjc/551966.htmlwww.dengb.comtruehttp://www.dengb.com/Linuxjc/551966.htmlTechArticlelinux获取进程id和进程名称 作为一个共享库,应该需要统计使用本库的各种应用程序的使用频率, 使用方法等信息。才能针对主要应用做出...

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,可以通过进程ID获取进程名。Linux系统中的每个进程都有一个唯一的进程ID(PID),可以使用这个PID获取进程名。 方法一:通过/proc文件系统获取进程名 在Linux系统的/proc目录下,有一个以进程ID命名的文件夹,进入该文件夹后,可以读取该文件夹下的status文件,其中包含了很多与进程相关的信息,包括进程名。可以使用cat命令或者读取文件的方式来获取进程名,例如: ```shell cat /proc/PID/status | grep Name ``` 其中,PID进程的实际进程ID,Name是进程名。 方法二:使用ps命令获取进程名 可以使用ps命令来获取进程的一些信息,其中包括进程名。可以使用以下命令来获取指定进程ID对应的进程名: ```shell ps -p PID -o comm= ``` 其中,PID进程的实际进程ID,comm表示进程名。 在使用以上方法获取进程名时,需要注意以下几点: 1. 只有在当前用户有足够权限的情况下,才能够获取其他用户创建的进程进程名。 2. 这些方法都是通过读取系统文件或者执行系统命令来获取进程名的,因此可能会对系统性能产生一定的影响,尤其是对于大量进程的系统。 3. 在获取进程名之前,需要确保该进程仍然存在,否则无法获取进程名。 综上所述,可以通过上述两种方法来获取Linux系统中任意进程进程名,从而实现根据进程ID获取进程名的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值