当执行位于我的 FUSE 文件系统上的 bash 脚本时,使用这些标志进行 open()
调用:
debug,cpfsfuse.c(62),cpfs_fuse_open: path "/make.sh", flags 0100040
The flags (0100040
) should correspond to those passed in parameter 2 of open()
. The unknown flag originates from an execve()
call:
matt@stanley:~/cpfs/dir$ strace -f ./make.sh
execve("./make.sh", ["./make.sh"], [/* 37 vars */]
我的代码识别#define O_LARGEFILE 00100000
,但另一个标志似乎仅在调用 execve()
时出现。
Grepping for flag 没有找到它:
matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
大多数终端标志被发现。任何人都可以阐明如何追查这面旗帜的起源和意义,或者在哪里可以找到它的定义吗?
最佳答案
/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC ((fmode_t)32)
关于c - execve() 传递的未知 open() 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3657003/