如果我用c知道pid,如何打印出进程名称?

时间:2017-12-04 16:52:04

标签: c linux system-calls

  

创建一个lab_ps.c程序,它打印所有正在运行的进程,如ps   -e。

     

提示:

     

所有进程的列表都可以在/ proc中找到;检查过程手册   (man proc)。打印两列:PID和CMD。

这是我的任务。我写了一个代码,我从/ proc目录得到pid。

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

int main()
{
    DIR *dir;
    struct dirent *entry;

    if ((dir = opendir("/proc")) == NULL)
        perror("opendir error");
    else
    {
      printf("Pid:\n");

      while ((entry = readdir(dir)) != NULL)
        {       if (entry->d_name[0] == '1' || entry->d_name[0] == '2'
                || entry->d_name[0] == '3' || entry->d_name[0] == '4'
                || entry->d_name[0] == '5' || entry->d_name[0] == '6'
                || entry->d_name[0] == '7' || entry->d_name[0] == '8'
                || entry->d_name[0] == '9') //used to find pid
                {
                        printf("  %s\n", entry->d_name);
                        if(fork() == 0)
                        {
                                execlp("cat", "cat", "/proc/",entry->d_name, NULL);
                        }
                        else
                                wait(NULL);
                }
        }
      closedir(dir);
    }

    return 0;
}

如何将pid转换为c中的进程名称?

0 个答案:

没有答案