Frage

Wenn ein Bash-Skript auf meinem FUSE-Dateisystem befindet ausgeführt wird, wird ein open() Anruf mit diesem Flags gemacht:

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

Die Flaggen (0100040) sollten den in Parameter übergeben entsprechen 2 von open() . Die unbekannte Flagge stammt aus einem execve() Aufruf:

matt@stanley:~/cpfs/dir$ strace -f ./make.sh 
execve("./make.sh", ["./make.sh"], [/* 37 vars */]

Mein Code erkennt #define O_LARGEFILE 00100000, aber die andere Fahne erscheint nur entstehen, wenn execve() genannt wird.

für die Flagge greppen es nicht finden:

matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less

Meist Terminal Flags gefunden. Kann jemand etwas Licht auf entweder, wie die Herkunft auf der Spur und Bedeutung dieser Flagge, oder wo seine Definition finden?

War es hilfreich?

Lösung

/usr/include/linux/fs.h:

/* File is opened for execution with sys_execve / sys_uselib */
#define FMODE_EXEC              ((fmode_t)32)

Andere Tipps

Dies könnte eine Kombination von Flags sein. (ODER-Verknüpfung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top