当执行位于我的FUSE文件系统上的bash脚本时,使用这些标志进行open()
调用:
debug,cpfsfuse.c(62),cpfs_fuse_open: path "/make.sh", flags 0100040
标志(0100040
)应与open()
的参数2中传递的标志相对应。未知标志来自execve()
电话:
matt@stanley:~/cpfs/dir$ strace -f ./make.sh
execve("./make.sh", ["./make.sh"], [/* 37 vars */]
我的代码识别#define O_LARGEFILE 00100000
,但只有在调用execve()
时才出现另一个标记。
对标志进行Grepping找不到它:
matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
主要是找到终端标志。任何人都可以了解如何追踪这面旗帜的起源和含义,或者在哪里找到它的定义?
答案 0 :(得分:3)
/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC ((fmode_t)32)
答案 1 :(得分:0)
这可能是旗帜的组合。 (或运算)。