- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是内核编程的新手,正在尝试使用 procfs。我用谷歌搜索了几个例子,他们都使用:
proc_create("hello",0,NULL,&proc_fops);
第二个参数是文件模式/权限。根据 proc_fs.h:
static inline struct proc_dir_entry *proc_create( const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops)
模式是 umode_t 类型,据我所知它被解析为 unsigned short int。
在至少 3 个示例中,附带的注释和措辞基本上表示同一件事,即“您在那里看到的值零表示您希望对 proc 文件的权限,其中零表示文件权限的默认值 0444。换句话说,您可以只使用 tt 他数值 0444(对于八进制),或 0400 用于更严格的访问,等等。但是对于典型的可读 proc 文件使用零是相当正常的。”
我无法理解这意味着什么。我了解文件权限、chmod u+x、八进制数,而且我想我了解 umask。
我只是不清楚 0 如何映射到 0444,以及如果我将 1 放在那里而不是 0 会发生什么。
最佳答案
答案似乎只有一点点。 include/linux/proc_fs.h 说:
static inline struct proc_dir_entry *proc_create(
const char *name, umode_t mode, struct proc_dir_entry *parent,
const struct file_operations *proc_fops)
{
return proc_create_data(name, mode, parent, proc_fops, NULL);
}
proc_create_data 在 fs/proc/generic.c 中定义。它就在那里:
struct proc_dir_entry *proc_create_data(const char *name, umode_t mode,
struct proc_dir_entry *parent,
const struct file_operations *proc_fops,
void *data)
{
...
if ((mode & S_IALLUGO) == 0)
mode |= S_IRUGO;
...
}
如果模式阻止所有人做任何事情,请将模式设置为 00444。
为了完整性,来自include/linux/stat.h:
#define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO)
#define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
#define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH)
来自include/uapi/linux/stat.h:
#define S_ISUID 0004000
#define S_ISGID 0002000
#define S_ISVTX 0001000
#define S_IRWXU 00700
#define S_IRUSR 00400
#define S_IRWXG 00070
#define S_IRGRP 00040
#define S_IRWXO 00007
#define S_IROTH 00004
关于linux - 为什么 proc_create 模式参数 0 对应于 0444,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28664971/
谁能给我proc_create()例子? 早些时候他们使用了create_proc_entry()在内核中,但现在他们使用 proc_create() . 最佳答案 这是一个“hello_proc”代
已结束。此问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我在编译我的驱动程序模块时收到“函数‘proc_create’的隐式声明”错误。我想在/proc 中创建一个条目并打印正在使用该模块的程序的数量。你能告诉我这里有什么问题吗?这是我的代码。 #incl
我正在尝试从已弃用的函数 create_proc_read_entry 迁移到使用 proc_create。我一直在研究使用 seq_files 的新实现。以前,我使用 /proc 文件系统将指针传递
我是内核编程的新手,正在尝试使用 procfs。我用谷歌搜索了几个例子,他们都使用: proc_create("hello",0,NULL,&proc_fops); 第二个参数是文件模式/权限。根据
我正在尝试将内容加载到我的内核中以了解如何添加内容! 我这里有两个文件! 下面是skynet.c: #include // included for all kernel modules #i
我是一名优秀的程序员,十分优秀!