当前位置:  技术问答>linux和unix

如何查找指定进程的PID,通过编程解决?

    来源: 互联网  发布时间:2016-01-23

    本文导语:  已知所要查找的进程肯定在运行之中。 如何通过编程得知该进程的pid号。 最好有C或C++代码作为例子,谢谢!! 系统是linux FC5。 | 看我这段代码能否达到楼主的要求: ------------------------...

已知所要查找的进程肯定在运行之中。
如何通过编程得知该进程的pid号。

最好有C或C++代码作为例子,谢谢!!

系统是linux FC5。

|
看我这段代码能否达到楼主的要求:
-----------------------------------------------------------
int find_pid_by_name(vector &vec_proid, char* pidName)
{
    DIR *dir;
    struct dirent *next;
    int i=0;

    dir = opendir("/proc");
    if (!dir)
    {
        fprintf(stderr, "Cannot open /procn");
        return -999;
    }
    
    while ((next = readdir(dir)) != NULL)
    {
        FILE *status;
        char filename[READ_BUF_SIZE];
        char buffer[READ_BUF_SIZE];
        char name[READ_BUF_SIZE];

        /* Must skip ".." since that is outside /proc */
        if (strcmp(next->d_name, "..") == 0)
            continue;

        /* If it isn't a number, we don't want it */
        if (!isdigit(*next->d_name))
            continue;

        sprintf(filename, "/proc/%s/status", next->d_name);
        if (! (status = fopen(filename, "r")) ) 
        {
            continue;
        }
/* Read first line in /proc/?pid?/status */
        if (fgets(buffer, READ_BUF_SIZE-1, status) == NULL) 
        {
            fclose(status);
            continue;
        }
        fclose(status);

        /* Buffer should contain a string like "Name:   binary_name" */
sscanf(buffer, "%*s %s", name);
        if (strcmp(name, pidName) == 0) 
{
  printf("PID:[%d][%s]n", strtol(next->d_name, NULL, 0), next->d_name);
          vec_proid.push_back(strtol(next->d_name, NULL, 0));
        }
    }
    return 0;
}

-----------------------------------------------------------

|
遍历/proc目录下的每一个数字命名的子目录,每一个子目录是一个进程的相关信息,其中文件cmdline包含进程所运行的程序文件名

例如/proc/1/cmdline包含的是
init

|
1. 用waitpid可以获得子进程的pid

2. 用getpid可以获得当前进程的pid

3. 用system()执行shell命令 ps -ax | grep "程序名"|awk '{print $1}'

|
#include    

system("脚本绝对路径名") 

或者用exec()也行。

    
 
 

您可能感兴趣的文章:

  • 求一小脚本,查找进程号然后kill掉
  • 查找系统当前所有存在的进程
  • 请问如何用C语言编写查找并杀死僵死进程的程序?在线等。。。。
  • shell grep 查找进程的小技巧
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • 请教如何在指定目录下查找包含指定文字的文件
  • Linux下怎么查找指定文件大小的文件?如查找100MB以上的文件
  • 在指定目录查找指定后缀文件的shell脚本代码
  • shell 如何查找出 指定目录下所有文件(含文件夹)的里面 指定字符串
  • 如何查找没有包含指定文件的所有目录?
  • 如何查找指定文件并复制或移动?
  • 如何在指定目录下查找指定文件?高分!!!
  • 求教:在UNIX中查找包含指定文字的文件名
  • 在JSP中,我想查找本机指定目录下的一个文件,怎么来实现呢?
  • 怎么用grep查找指定目录及其子目录下的特定文件类型?
  • shell关于查找指定字符是否存在
  • 如何查找指定文件并且计算总文件大小?
  • grep如何查找子目录下的指定文件
  • php查找指定字符串并删除
  • shell查找指定区间的字符串并将该文件转换成unix格式
  • mysql unix准换时间格式查找指定日期数据代码
  • C#中怎样从指定字符串中查找并替换字符串?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 rfind():查找最后一个与value相等的字符(逆向查找)
  • php顺序查找与二分查找实例
  • C++ Maps 成员 find():查找一个元素
  • php顺序查找和二分查找示例
  • C++ MultiMaps 成员 find():查找元素
  • 在unix查找某个目录下一小时前的生成的文件,怎么查找?find只能按天来查。
  • C++ Strings(字符串) 成员 find():在字符串中查找字符
  • vim怎么查找并替换 “[bx][si]”呢。。貌似是因为两个中括号连在一起查找不到。。
  • C++ Strings(字符串) 成员 find_first_of():查找第一个与value中的某值相等的字符
  • 还发一个查找文件的贴子,给一个相对目录USR0怎样用JAVA查找其下的文件
  • C++ Strings(字符串) 成员 find_last_of():查找最后一个与value中的某值相等的字符
  • java 折半查找法(二分查找)实例
  • C++ Strings(字符串) 成员 find_first_not_of():查找第一个与value中的所有值都不相等的字符
  • php字符串查找 查找字符最后一次出现位置
  • C++ Strings(字符串) 成员 find_last_not_of():查找最后一个与value中的所有值都不相等的字符
  • jquery 父页面查找iframe子页面内容、子页面查找父页面内容
  • Linux c++库boost unordered_set数据插入及查找代码举例
  • 高分急求:UNIX环境下查找字符串的问题 (给出文件路径,和需要查找的字符串)工作急需,恳求各位高手帮忙!!!!
  • HASH查找的程序实现及性能分析
  • find命令怎么用能够实现不递归查找子目录?
  • Linux c++库boost unordered_map数据插入及查找代码举例
  • linux虚拟机在Vim中怎么取消查找


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3