1

执行位于我的 FUSE 文件系统上的 bash 脚本时,open()会使用以下标志进行调用:

调试,cpfsfuse.c(62),cpfs_fuse_open:路径“/make.sh”,标志 0100040

flags ( 0100040) 应该对应于在参数 2 中传递的那些open()。未知标志来自一个execve()调用:

matt@stanley:~/cpfs/dir$ strace -f ./make.sh 
execve("./make.sh", ["./make.sh"], [/* 37 vars */]

我的代码可以识别#define O_LARGEFILE 00100000,但另一个标志似乎只有在execve()被调用时才会出现。

Grepping for the flag 没有找到它:

matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less

大多数终端标志被发现。任何人都可以阐明如何追踪这面旗帜的起源和意义,或者在哪里可以找到它的定义?

4

2 回答 2

3

/usr/include/linux/fs.h:

/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC              ((fmode_t)32)
于 2010-09-07T09:05:17.570 回答
0

这可能是标志的组合。(或)。

于 2010-09-07T09:04:53.020 回答