检测文件描述符何时来自/ proc

时间:2014-12-08 18:25:49

标签: c++ c linux linux-kernel

无法以正常方式读取/ proc目录中的文件。特别是,即使有内容,fstat也会告诉你文件的大小为零。

这对我的一些文件阅读代码造成严重破坏,这些代码在阅读之前首先要求文件大小。基本上你必须从/ proc读取文件,就像读取管道或stdin一样 - 读取直到你得到EOF。

但是,如何检测文件描述符或FILE *是否来自/ proc?

在查看fstat后的stat内容时,我没有看到任何明确的方法来检测这个。 st_mode或所有权或权限中的任何内容都无法明确告诉我来自/ proc。

设备ID看起来很有希望 - 在我尝试过的系统上,它恢复为3,常规磁盘的数量更高(如801)。但它总是保证3吗?我无法找到官方支持的方式。

在c / c ++中寻找答案

1 个答案:

答案 0 :(得分:0)

好的回答。

#include <sys/statfs.h>
#include <linux/magic.h>

struct statfs fs;
fstatfs( fileno( file ), &fs );
bool isProc = ( fs.f_type == PROC_SUPER_MAGIC ) ? true : false;