Linux下获得进程id和进程名字
2015-12-23 13:06
573 查看
1. 通过进程名字得到进程id。
pid_t getProcessPidbyName(char *name)
{
FILE *fptr;
char *buf = new char[255];
char cmd[255] = {'\0'};
pid_t pid = -1;
sprintf(cmd,"pidof %s",name);
if((fptr = popen(cmd,"r")) != NULL)
{
if(fgets(buf,255,fptr) != NULL)
{
pid = atoi(buf);
printf("pid = %d\n",pid);
}
}
pclose(fptr);
delete buf;
return pid;
}
这里的传入参数name是进程的名字,不是它的绝对路径名。
2. 通过进程id得到进程的文件路劲名字,进程存在的绝对路径名。
bool getPathNamebyPid(pid_t pid,char *name)
{
FILE *fptr;
bool bret = false;
char cmd[255] = {'\0'};
sprintf(cmd,"readlink /proc/%d/exe",pid);
if((fptr = popen(cmd,"r")) != NULL)
{
if(fgets(name,255,fptr) != NULL)
{
printf("the path name is %s.\n",name);
bret = true;
}
}
pclose(fptr);
return bret;
}
这里得到的是进程的绝对路径名,传入的参数,需要在外部为其开辟空间。用完需要释放。
3. 通过文件的绝对路径名自然就很容易得到进程的名字。
bool getProcessNamebyPathName(const char* pathName,char* name)
{
memset(name,'\0',255);
const char* pos = strrchr(pathName,'/');
if(pos == 0)
{
strcpy(name,pathName);
}
else
{
strcpy(name,pos+1);
}
return true;
}
pid_t getProcessPidbyName(char *name)
{
FILE *fptr;
char *buf = new char[255];
char cmd[255] = {'\0'};
pid_t pid = -1;
sprintf(cmd,"pidof %s",name);
if((fptr = popen(cmd,"r")) != NULL)
{
if(fgets(buf,255,fptr) != NULL)
{
pid = atoi(buf);
printf("pid = %d\n",pid);
}
}
pclose(fptr);
delete buf;
return pid;
}
这里的传入参数name是进程的名字,不是它的绝对路径名。
2. 通过进程id得到进程的文件路劲名字,进程存在的绝对路径名。
bool getPathNamebyPid(pid_t pid,char *name)
{
FILE *fptr;
bool bret = false;
char cmd[255] = {'\0'};
sprintf(cmd,"readlink /proc/%d/exe",pid);
if((fptr = popen(cmd,"r")) != NULL)
{
if(fgets(name,255,fptr) != NULL)
{
printf("the path name is %s.\n",name);
bret = true;
}
}
pclose(fptr);
return bret;
}
这里得到的是进程的绝对路径名,传入的参数,需要在外部为其开辟空间。用完需要释放。
3. 通过文件的绝对路径名自然就很容易得到进程的名字。
bool getProcessNamebyPathName(const char* pathName,char* name)
{
memset(name,'\0',255);
const char* pos = strrchr(pathName,'/');
if(pos == 0)
{
strcpy(name,pathName);
}
else
{
strcpy(name,pos+1);
}
return true;
}
相关文章推荐
- redhat Linux 创建交换分区swap
- linux压缩(解压缩)命令详解
- centos 基础环境配置
- linux内核中的GPIO系统之(2):pin control subsystem
- ARM LINUX 扩展串口
- linux下mysql开启远程访问权限及防火墙开放3306端口
- 优化Linux内核参数,提高服务器并发处理能力
- CentOS系统下编译安装MySQL以及设置相关yum源的教程
- linux自定义命令
- centos7.0 安装MySQL5.7.10
- linux下使用tar与openssl进行加解密
- linux下opensll加解密详解
- Linux共享内存
- linux版本Debian VS CentOS
- linux绑定进程到指定cpu
- 全面讲解在Linux系统中安装和配置HAProxy的过程
- rpm包管理功能全解(CentOS系统)
- Linux安装Vritualbox虚拟机软件
- Linux下使用c#开发倒计时功能
- Linux系统中sed命令在文件某行前后添加内容的用法