创建一个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中的进程名称?