嵌入式 一个进程获取另一个指定名称进程的PID

原创 2013年12月04日 20:52:57

1、我们可以直接使用管道获取

ps u | awk '/\.\/sigrecevice$/{print $2}'

注意:转义字符打印的时候需要两次转义:打印“\t” 为“\\t”

2、如果想获取之后保存在变量中,则实现代码如下:

#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <fcntl.h> #include <sys/types.h> #define __DEBUG__

#ifdef __DEBUG__ #define msg_print(...) printf(__VA_ARGS__) #else #define msg_print(...) #endif

#define MAX_VALUE_LEN 32

int joseph_get_name_pid(const char *key, char *value);

int joseph_get_name_pid(const char *key, char *value) {     FILE *stream = NULL;     char cmd[64] = {0};     char  buf[8] = {0};     if(NULL == key || 0 == strlen(key)){  msg_print("invalid parameter!\n");  return -1;     }     strcpy(buf,"\\.\\/");     printf("%s %d The buf is %s\n",__FUNCTION__,__LINE__,buf);     //sprintf(cmd, "ps u | awk '/%s$/{print $2}' | sed -n '1p'",key);     sprintf(cmd, "ps u | awk '/%s%s$/{print $2}'",buf,key);     msg_print("cmd = %s\n",cmd);

    stream = popen(cmd,"r");

    if(fread(value, sizeof(char), MAX_VALUE_LEN, stream) <= 0){  pclose(stream);  return -1;     }     strcpy(value + strlen(value) - 1, "\0");     msg_print("%s = %s\n", key, value);

    pclose(stream);     return 0; }

int main(int argc,char *argv[]) {     char value[32] = {0};     int name_pid = 0;     if(argc != 2)     {  printf("%s %d The param is two !\n",__FUNCTION__,__LINE__);  return -1;     }     joseph_get_name_pid(argv[1] ,value);     if(strlen(value) == 0)     {  printf("%s %d The %s is not running !\n",__FUNCTION__,__LINE__,argv[1]);  return -1;     }     name_pid = atoi(value);     printf("%s %d The pid is %s(char) ,the pid length is %d !\n",__FUNCTION__,__LINE__,value,strlen(value));     printf("%s %d The pid is %d(int) !\n",__FUNCTION__,__LINE__,name_pid);     return 0; }


                    

cmd下获取指定进程名的pid号,并通过taskkill结束该进程

cmd下获取指定进程名的pid号,并通过taskkill结束该进程
  • rznice
  • rznice
  • 2017年01月11日 17:30
  • 2842

Linux下C语言开发(已知进程名得到其PID号)

在我的另外一个篇博客【Linux下C语言开发(信号signal处理机制)】中需要测试系统调用kill来向指定进行号发送指定的信号,在同一个测试文件很容易获取当前进程的pid,只需调用getpid()函...
  • u010871058
  • u010871058
  • 2017年05月27日 12:57
  • 790

根据进程名获取进程PID以及进程

今天,帮人解答问题时,用VB.NET写了段根据进程名称查找PID的方法。 以前用VB6时积累的API发挥了作用,主要在VB.NET处理API声明时注意一下把所有的long改成Integer,同时如果...
  • danielinbiti
  • danielinbiti
  • 2015年01月16日 23:03
  • 7603

linux shell 根据进程名获取pid

导读 交互式 Bash Shell 获取进程 pid Bash Shell 脚本获取进程 pid 获取 Shell 脚本自身进程 pid 查看指定进程是否存在导读Linux 的交互式 Shell 与 ...
  • baidu_33850454
  • baidu_33850454
  • 2017年11月18日 13:57
  • 201

C语言实现由PID获取进程名&由进程名获取PID

当制作多个项目的时候,我们可以把多个应用程序集成在一起,就像网页的href一样,在几个进程中跳转,这里就在C语言中实现获取进程号,然后kill掉它,启动另外一个应用程序,就这样我们就轻松实现了应用程序...
  • qq_21792169
  • qq_21792169
  • 2016年04月02日 23:37
  • 7692

linux根据pid获取进程名和获取进程pid(c语言获取pid)

tatus文件,第一行的Name即为进程名,C程序实现根据PID获取进程名和根据进程名获取PID,大家参考使用吧 Liunx中通过进程名查找进程PID可以通过 pidof [进程...
  • zhukangle
  • zhukangle
  • 2016年11月29日 18:40
  • 1815

根据PID获取进程名 或者 根据进程名获取PID

根据PID获取进程名&根据进程名获取PID Liunx中 通过进程名查找进程PID可以通过 pidof [进程名] 来查找。反过来 ,相同通过PID查找进程名则没有相关命令。 在linux根目...
  • bzhxuexi
  • bzhxuexi
  • 2014年04月09日 13:49
  • 4851

通过PID获取进程路径和进程名的两种方法

通过PID获取进程路径和进程名的两种方法 分类: 编程技术2012-04-25 10:54 3220人阅读 评论(3) 收藏 举报 extensionpathnulltokenex...
  • jfkidear
  • jfkidear
  • 2014年05月26日 10:06
  • 3440

根据进程名字查找pid

Liunx中通过进程名查找进程PID可以通过 pidof [进程名] 来查找。反过来 ,相同通过PID查找进程名则没有相关命令。在linux根目录中,有一个/proc的VFS(虚拟文件系统),系统当前...
  • aa787282301
  • aa787282301
  • 2016年10月16日 14:00
  • 731

Linux下C语言开发(已知进程名得到其PID号)

在我的另外一个篇博客【Linux下C语言开发(信号signal处理机制)】中需要测试系统调用kill来向指定进行号发送指定的信号,在同一个测试文件很容易获取当前进程的pid,只需调用getpid()函...
  • Thanksgining
  • Thanksgining
  • 2014年12月09日 17:50
  • 4974
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 一个进程获取另一个指定名称进程的PID
举报原因:
原因补充:

(最多只允许输入30个字)