最近项目需要做应用管理,需要知道运行的应用名称及其进程ID,用于监控程序的资源占用情况。

        首先是获取可执行文件名,需要用到readlink()函数,但是readlink获取的是可执行文件的绝对路径,需要用到strrchr()函数进行字符串处理,去掉路径,提取出可执行文件名。

readlink()函数用法:

linux获取可执行文件名及进程ID

strrchr()函数用法:

linux获取可执行文件名及进程ID

获取可执行文件名函数代码如下:

int get_exec_name(char *name,int name_size)
{
	char path[1024]={0};
	int ret = readlink("/proc/self/exe",path,sizeof(path)-1);
	if(ret == -1)
	{
		printf("---- get exec name fail!!\n");
		return -1;
	}
	path[ret]= '\0';

	char *ptr = strrchr(path,'/');
	bzero(name,name_size); //清空缓存区
	strncpy(name,ptr+1,name_size-1);
	return 0;
}

获取进程PID则直接调用getpid()函数即可:

getpid()用法:

linux获取可执行文件名及进程ID

测试代码如下:

int main(int argc,char *argv[])
{	
	char path[256]={0};
	get_exec_name(path,sizeof(path)); //获取可执行文件名
	
	int pid = getpid(); //获取进程ID
	printf("exec_name = %s pid=%d\n",path,pid);
	while(1);
    return 0;
}

测试结果:

linux获取可执行文件名及进程ID

linux获取可执行文件名及进程ID

相关文章:

  • 2022-12-23
  • 2022-03-08
  • 2021-07-29
  • 2021-11-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-29
猜你喜欢
  • 2021-12-31
  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
相关资源
相似解决方案