亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

linux根據pid獲取進程名和獲取進程pid(c語言獲取pid)

2020-01-26 15:39:05
字體:
來源:轉載
供稿:網友

Liunx中通過進程名查找進程PID可以通過 pidof [進程名] 來查找。反過來 ,相同通過PID查找進程名則沒有相關命令。在linux根目錄中,有一個/proc的VFS(虛擬文件系統),系統當前運行的所有進程都對應于該目錄下的一個以進程PID命名的文件夾,其中存放進程運行的N多信息。其中有一個status文件,cat顯示該文件, 第一行的Name即為進程名。

打開stardict程序,進程名為stardict;

shell中分別根據Pid獲取進程名、根據進程名獲取Pid

1)查找stardict的pid:pidof stardict

2)根據1)的pid查找進程名: grep "Name:" /proc/5884/status

應用:kill一個進程需要指定該進程的pid,所以我們需要先根據進程名找到pid,然后再kill;
killall命令則只需要給定進程名即可,應該是封裝了這個過程。

C程序中實現上述過程

復制代碼 代碼如下:

#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>

#define BUF_SIZE 1024

void getPidByName(char* task_name)
{
    DIR *dir;
    struct dirent *ptr;
    FILE *fp;
    char filepath[50];//大小隨意,能裝下cmdline文件的路徑即可
    char cur_task_name[50];//大小隨意,能裝下要識別的命令行文本即可
    char buf[BUF_SIZE];
    dir = opendir("/proc"); //打開路徑
    if (NULL != dir)
    {
        while ((ptr = readdir(dir)) != NULL) //循環讀取路徑下的每一個文件/文件夾
        {
            //如果讀取到的是"."或者".."則跳過,讀取到的不是文件夾名字也跳過
            if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0))            
            continue;
            if (DT_DIR != ptr->d_type)
              continue;

            sprintf(filepath, "/proc/%s/status", ptr->d_name);//生成要讀取的文件的路徑
            fp = fopen(filepath, "r");//打開文件
            if (NULL != fp)
            {
                if( fgets(buf, BUF_SIZE-1, fp)== NULL ){
                fclose(fp);
                continue;
             }
            sscanf(buf, "%*s %s", cur_task_name);

                //如果文件內容滿足要求則打印路徑的名字(即進程的PID)
                if (!strcmp(task_name, cur_task_name))
                printf("PID:  %s/n", ptr->d_name);
                fclose(fp);
            }

        }
        closedir(dir);//關閉路徑
    }
}

void getNameByPid(pid_t pid, char *task_name) {
    char proc_pid_path[BUF_SIZE];
    char buf[BUF_SIZE];

    sprintf(proc_pid_path, "/proc/%d/status", pid);
    FILE* fp = fopen(proc_pid_path, "r");
    if(NULL != fp){
        if( fgets(buf, BUF_SIZE-1, fp)== NULL ){
            fclose(fp);
        }
        fclose(fp);
        sscanf(buf, "%*s %s", task_name);
    }
}

void main(int argc, char** argv)
{
    char task_name[50];
    pid_t pid = getpid();

    printf("pid of this process:%d/n", pid);
    getNameByPid(pid, task_name);

    /*
    strcpy(task_name, argv[0]+2);
    printf("task name is %s/n", task_name);
    getPidByName(task_name);
    */
    printf("task name is %s/n", task_name);
    getPidByName(task_name);
    sleep(15);
}

運行結果:

進入/proc/9674/status查看文件內容,一切對應。

復制代碼 代碼如下:

Name: test
State: S (sleeping)
Tgid: 9674
Pid: 9674
PPid: 7438
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
FDSize: 256
Groups: 4 24 27 30 46 112 124 1000
VmPeak:  4340 kB
VmSize:  4336 kB
VmLck:  0 kB
VmPin:  0 kB
VmHWM:  600 kB
VmRSS:  600 kB
VmData:  184 kB
VmStk:  136 kB
VmExe:  4 kB
VmLib:  1920 kB
VmPTE:  32 kB
VmSwap:  0 kB
Threads: 1
SigQ: 0/15776
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
Seccomp: 0
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 1
nonvoluntary_ctxt_switches: 4

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成在线观看网站高清| 7m精品福利视频导航| 最近2019中文字幕mv免费看| 日韩精品视频在线观看免费| 欲色天天网综合久久| 国产色视频一区| 国内精品视频久久| 国产精品老女人精品视频| 亚洲午夜女主播在线直播| 国产精品久久久久久av福利| 久久这里只有精品视频首页| 日韩视频一区在线| 国产香蕉一区二区三区在线视频| 亚洲黄页视频免费观看| 成人福利免费观看| 成人性生交xxxxx网站| 久久精品一偷一偷国产| 亚洲永久在线观看| 日韩在线视频观看| 亚洲一区二区三区视频播放| 亚洲欧美日韩天堂一区二区| 蜜臀久久99精品久久久久久宅男| 国产区精品在线观看| 国产成人涩涩涩视频在线观看| 色综合伊人色综合网| 黑人与娇小精品av专区| 日韩三级影视基地| 国产亚洲美女久久| 欧美国产日韩一区二区在线观看| 欧美成人在线免费视频| 国产精品91久久久| 欧美人成在线视频| 精品国产一区二区三区久久久| 91av国产在线| 精品偷拍一区二区三区在线看| www.日韩免费| 美女性感视频久久久| 欧美做爰性生交视频| 成人黄色免费看| 国产精品ⅴa在线观看h| 一区二区在线免费视频| 亚洲天堂影视av| 国产精品国内视频| 91色视频在线观看| 日韩欧美在线中文字幕| 亚洲精品免费网站| 亚洲偷熟乱区亚洲香蕉av| 久久久人成影片一区二区三区观看| 国产精品欧美一区二区三区奶水| 国产亚洲精品一区二555| 91精品国产91久久久久久最新| 成人免费观看网址| 国产精品久久国产精品99gif| xvideos亚洲人网站| 91精品国产综合久久久久久蜜臀| 亚洲美女视频网站| 亚洲人成在线观看网站高清| 日韩在线精品视频| 亚洲人av在线影院| 欧美激情视频一区| 精品五月天久久| 这里只有精品丝袜| 91精品国产高清久久久久久久久| 成人国产亚洲精品a区天堂华泰| 久久精品美女视频网站| 91久久久久久久| 91精品国产91久久久| 亚洲在线免费视频| 2018国产精品视频| 欧美午夜激情小视频| 日韩一区二区三区国产| 成人欧美一区二区三区在线| 色妞色视频一区二区三区四区| 欧美极品少妇xxxxⅹ免费视频| 午夜欧美不卡精品aaaaa| 日韩一区二区在线视频| 日韩欧美在线播放| 亚洲国产精品美女| 精品久久久久久中文字幕一区奶水| 久久天堂av综合合色| 国产成人综合亚洲| 久久999免费视频| 欧美激情欧美狂野欧美精品| 欧美一区在线直播| 一本一本久久a久久精品综合小说| 成人免费视频xnxx.com| 日韩欧美国产高清91| 亚洲欧美日本伦理| 欧美精品一区在线播放| 91国内免费在线视频| 日韩中文字幕亚洲| 欧美在线视频观看免费网站| 69国产精品成人在线播放| 啪一啪鲁一鲁2019在线视频| 午夜精品三级视频福利| 97视频色精品| 亚洲精品乱码久久久久久按摩观| 久久久久久久久国产| 久久久久久这里只有精品| 97视频免费在线观看| 国产精品久久久久国产a级| 欧美视频免费在线观看| 精品一区二区三区电影| 日韩电影中文字幕一区| 欧美国产第二页| 亚洲欧美日韩在线高清直播| 国产拍精品一二三| 国内精品400部情侣激情| 国产国语videosex另类| 中文字幕成人精品久久不卡| 亚洲国产成人精品久久| 久久久久成人精品| 国产精品欧美激情| 国产精品久久久久aaaa九色| 午夜精品蜜臀一区二区三区免费| 欧美视频国产精品| 国产mv久久久| 精品亚洲一区二区三区| 日韩中文字在线| 欧美日韩精品二区| 色伦专区97中文字幕| 欧美日韩一区二区免费在线观看| yw.139尤物在线精品视频| 久久国产精品视频| 国产99视频精品免视看7| 欧美日韩在线另类| 国产精品海角社区在线观看| 亚洲欧美国产一本综合首页| 最近更新的2019中文字幕| 国产丝袜一区二区| 久久久久999| 日韩中文综合网| 最近2019中文字幕大全第二页| 日韩高清免费在线| 欧美黑人一区二区三区| 国产精品扒开腿做爽爽爽视频| 国产精品尤物福利片在线观看| 欧美午夜精品在线| 国产成人精品免高潮费视频| 色婷婷综合久久久久| 亚洲美女视频网| 66m—66摸成人免费视频| 日本免费久久高清视频| 欧美性生交大片免网| 亚洲男人7777| 日韩欧美视频一区二区三区| 欧美美女操人视频| 57pao国产精品一区| 国产在线98福利播放视频| 国产91亚洲精品| 欧美xxxx做受欧美| 久久av在线看| 欧美日韩在线看| 国内外成人免费激情在线视频| 亚洲一区二区中文| 国产精品日韩电影| 91av在线网站| 日韩精品高清在线观看| 久久天堂电影网| 在线观看欧美视频| 国产精品99久久久久久久久久久久| 欧美日韩国产页| 亚洲天堂成人在线| 日本亚洲欧洲色|