execve() 传递的未知 open() 标志
执行位于我的 FUSE 文件系统上的 bash 脚本时,会使用这些标志进行 open()
调用:
debug,cpfsfuse.c(62),cpfs_fuse_open: path "/make.sh", flags 0100040
标志 (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 标志没有找到它:
matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
大多数终端标志都找到了。任何人都可以阐明如何追踪该标志的起源和含义,或者在哪里可以找到其定义?
When executing a bash script located on my FUSE filesystem, an open()
call is made with these flags:
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 */]
My code recognises #define O_LARGEFILE 00100000
, but the other flag appears to arise only when execve()
is called.
Grepping for the flag does not find it:
matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
Mostly terminal flags are found. Can anyone shed some light on either how to track down the origin and meaning of this flag, or where to find its definition?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
/usr/include/linux/fs.h:
/usr/include/linux/fs.h:
这可能是标志的组合。 (或)。
This might be a combination of flags. (ORed).