怎么写一个读去/proc/pid/attr 目录下的文件的工具
时间: 2023-12-23 10:02:11 浏览: 81
读取 `/proc/pid/attr` 目录下的文件可以使用以下步骤:
1. 打开目标进程的 `/proc/pid/attr` 目录。
2. 读取该目录下的所有文件名。
3. 遍历所有文件名,使用 `open()` 函数打开每个文件。
4. 使用 `read()` 函数读取文件内容。
5. 关闭文件句柄,重复步骤 3-5 直到遍历完所有文件。
以下是一个简单的示例程序来实现这个过程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s PID\n", argv[0]);
exit(EXIT_FAILURE);
}
char path[256];
sprintf(path, "/proc/%s/attr", argv[1]);
DIR *dir = opendir(path);
if (!dir) {
perror("opendir");
exit(EXIT_FAILURE);
}
struct dirent *entry;
while ((entry = readdir(dir))) {
if (entry->d_name[0] == '.') {
continue;
}
char filename[256];
sprintf(filename, "%s/%s", path, entry->d_name);
FILE *file = fopen(filename, "r");
if (!file) {
perror("fopen");
continue;
}
char buffer[1024];
size_t nread;
while ((nread = fread(buffer, 1, sizeof(buffer), file))) {
fwrite(buffer, 1, nread, stdout);
}
fclose(file);
}
closedir(dir);
return 0;
}
```
以上程序会先读取命令行参数指定的进程 PID,然后打开该进程的 `/proc/pid/attr` 目录。接着遍历目录下的所有文件,并逐个打开、读取、关闭文件内容。最终输出文件内容到标准输出。
阅读全文