我有
FILE *file = fopen("/proc/cmdline", "r");
struct stat st;
fstat(file, &st);
char buffer[st.st_size];
fgets(buffer, st.st_size,file);
printf("%s", buffer);
这会打印出 cmdline 的内容,但我在
fstat()
函数处有一个 int 指针转换警告。如果我尝试 fstat(fileno(file), &st);
缓冲区有乱码,意味着 st.st_size 没有正确设置。同样,寻找文件末尾来获取其大小也没有正确设置缓冲区的大小
如何读取/proc/cmdline文件大小
(假设 Linux)像这样(为简洁起见,省略了错误检查):
#include <limits.h>
...
char buf[ARG_MAX];
FILE *fp = fopen("/proc/cmdline", "rb");
size_t len = fread(buf, sizeof(buf), 1, fp);