当前位置: 技术问答>linux和unix
读取虚拟目录/proc下的文件为空,怎么办?
来源: 互联网 发布时间:2016-06-14
本文导语: /proc 从 本质上讲,这不是种目录,而是一种虚拟文件系统。该目录中的文件保存在内存中,而不是在磁盘上。该目录中包含以动态方式创建的文件,这些文件始终处于变动 状态,由系统不断生成。这些文件的存在...
/proc
从 本质上讲,这不是种目录,而是一种虚拟文件系统。该目录中的文件保存在内存中,而不是在磁盘上。该目录中包含以动态方式创建的文件,这些文件始终处于变动 状态,由系统不断生成。这些文件的存在方式不像一般的文本文件,他们仅根据请求而产生。这类文件提供了与正在系统上运行的进程有关的信息。
请问我想得到/proc/version这个version这个文件的完整信息,想用fopen打开,再用fseek(fp,0,SEEK_END)到最后,int len = ftell(fp);然后再用一个char *buf = (char *)malloc(len+1);fseek(fp,0,SEEK_SET);最后fread(buf,1,len,fp)到buf当中,用这种方式读一个非/proc目录下的文件,也就是普通目录下的文件,例/usr/local/version读这个目录下的文件是正确的,能读到完整信息,但是用这种方法读/proc/version时,len=ftell(fp)居然为0,也就是文件大小为0,我ls -l version结果显示文件大小果然是0,请问我用什么方法才能准备的读取这个文件里的完整信息啊,因为不知道/proc这个目录的文件大小都是多少,所以不能确定义多大个buf[length]?大了小了都不好?length小了这个buf读完信息,长了有点儿浪费。请高人指点一二,谢谢!
从 本质上讲,这不是种目录,而是一种虚拟文件系统。该目录中的文件保存在内存中,而不是在磁盘上。该目录中包含以动态方式创建的文件,这些文件始终处于变动 状态,由系统不断生成。这些文件的存在方式不像一般的文本文件,他们仅根据请求而产生。这类文件提供了与正在系统上运行的进程有关的信息。
请问我想得到/proc/version这个version这个文件的完整信息,想用fopen打开,再用fseek(fp,0,SEEK_END)到最后,int len = ftell(fp);然后再用一个char *buf = (char *)malloc(len+1);fseek(fp,0,SEEK_SET);最后fread(buf,1,len,fp)到buf当中,用这种方式读一个非/proc目录下的文件,也就是普通目录下的文件,例/usr/local/version读这个目录下的文件是正确的,能读到完整信息,但是用这种方法读/proc/version时,len=ftell(fp)居然为0,也就是文件大小为0,我ls -l version结果显示文件大小果然是0,请问我用什么方法才能准备的读取这个文件里的完整信息啊,因为不知道/proc这个目录的文件大小都是多少,所以不能确定义多大个buf[length]?大了小了都不好?length小了这个buf读完信息,长了有点儿浪费。请高人指点一二,谢谢!
|
popen("cat /proc/version")
获取 popen 的返回数据即可。
获取 popen 的返回数据即可。