Неизвестный флаг open (), переданный execve () - PullRequest
1 голос
/ 07 сентября 2010

При выполнении сценария bash, расположенного в моей файловой системе FUSE, выполняется вызов open() с этими флагами:

debug,cpfsfuse.c(62),cpfs_fuse_open: path "/make.sh", flags 0100040

Флаги (0100040) должны соответствовать значениям, переданным в параметре 2open().Неизвестный флаг исходит из 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

В основном обнаружены флажки терминала.Может ли кто-нибудь пролить свет на то, как отследить происхождение и значение этого флага, или где найти его определение?

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

/usr/include/linux/fs.h:

/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC              ((fmode_t)32)
0 голосов
/ 07 сентября 2010

Это может быть комбинация флагов. (ORed).

...