1

FUSEファイルシステムにあるbashスクリプトを実行するopen()と、次のフラグを使用して呼び出しが行われます。

debug、cpfsfuse.c(62)、cpfs_fuse_open:パス "/make.sh"、フラグ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()はが呼び出されたときにのみ発生するように見えます。

旗を探しても見つかりません:

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

これはフラグの組み合わせである可能性があります。(ORed)。

于 2010-09-07T09:04:53.020 に答える