gpt4 book ai didi

c - 如何像 ps -e 一样显示进程

转载 作者:行者123 更新时间:2023-11-30 20:32:28 25 4
gpt4 key购买 nike

你好!

我想制作一个简单的 C 程序,它的工作方式类似于 ps -e。唯一应该显示的列是 PID 和 CMD。这是我的代码:

#include <dirent.h>
#include <errno.h>
#include <sys/types.h>
#include <stdio.h>
#include <regex.h>
int main()
{
DIR *dir;
struct dirent *entry;
if ((dir = opendir("/proc")) == NULL)
perror("operation error");
else
{
printf("PID CMD\n");
while ((entry = readdir(dir)) != NULL)
printf(" %s\n", entry->d_name);
closedir(dir);
}
return 0;
}

我的任务是:

1) 如何只显示带有数字的文件夹(我不知道如何实现 regcomp())?

2)如何接近PID写入CMD(如果是带有数字的文件夹,我无法将(?)字符串与路径粘合)?

最佳答案

这是一个提示...尝试从这里开始开发您的代码! :)

#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>

int readData(char *dirname);

int readData(char *dirname)
{
FILE * file;
char buffer[1024]={0};

sprintf(buffer,"/proc/%s/stat",dirname);

file = fopen(buffer,"r");
if (!file)
return errno;

while(fgets(buffer,sizeof(buffer),file))
puts(buffer);

if (file)
fclose(file);

return errno;
}

int main(void)
{
DIR * dir;

struct dirent * entry;

if ( (dir = opendir("/proc")) == NULL )
perror("operation error");

while ((entry = readdir(dir))) {
if ( strlen(entry->d_name) == strspn(entry->d_name, "0123456789"))
if (readData(entry->d_name))
break;
}

if (dir)
closedir(dir);

return errno;
}

关于c - 如何像 ps -e 一样显示进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47439782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com