【发布时间】:2015-03-06 14:25:21
【问题描述】:
我需要使用 fopen() 系统调用在 /proc/ 文件夹中打开一个没有扩展名的文件,不幸的是它不起作用。
这是代码
#include <stdio.h>
#include <strings.h>
#include <errno.h>
int main(void){
FILE *f;
int size;
//open /proc/meminfo
f = fopen("/proc/meminfo", "r");
printf("errno after open: %s\n", strerror(errno)); //errno = Success
//create buffer
fseek(f,0,SEEK_END);
size = ftell(f);
printf("size: %d\n", size);
char buffer[size];
bzero(buffer,size);
fseek(f,0,SEEK_SET);
//fill the buffer and print
fread(buffer,sizeof(char),size,f);
printf("%s\n", buffer);
return 0;
}
问题是size=0,errno为“Success”,所以即使打开了也读不到文件。
你有什么想法吗?
提前致谢!
【问题讨论】:
-
请检查
f文件打开的结果。该文件必须具有准确的文件名,并以完整路径名或可用路径的形式存在。 -
你确定这是你的程序吗?包含文件应该是
#include <string.h>。更正后,我得到输出errno after open: No such file or directory。 -
当然,我刚才写了上面的程序来试试。用字符串标题修复我有相同的结果。 fopen() 的结果是一个指针,我已经检查过了。编辑:我认为这不是路径名问题,尝试使用 /boot/memtest86+.bin 它可以工作,唯一的区别是路径名末尾的扩展名
-
也许那个文件(没有扩展名)确实存在并且它的大小是 0。大概你确实检查了
f!=NULL,在所有文件打开操作之后必不可少? -
ls -la /proc/meminfo?