Lors de l'exécution d'un script bash situé sur mon système de fichiers FUSE, un open()
appel est fait avec ces drapeaux:ouvert() inconnu drapeau adopté par exec()
debug,cpfsfuse.c(62),cpfs_fuse_open: path "/make.sh", flags 0100040
Les drapeaux (0100040
) doit correspondre à ceux qui sont passés dans le paramètre 2 de open()
. Le drapeau inconnu provient d'un appel execve()
:
[email protected]:~/cpfs/dir$ strace -f ./make.sh
execve("./make.sh", ["./make.sh"], [/* 37 vars */]
Mon code reconnaît #define O_LARGEFILE 00100000
, mais l'autre drapeau semble se poser que lorsque execve()
est appelé.
Grepping pour le drapeau ne trouve pas:
[email protected]:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
drapeaux terminaux La plupart du temps se trouvent. Quelqu'un peut-il nous éclairer sur la manière de retrouver l'origine et la signification de ce drapeau, ou sur la définition de sa définition?
Wow, combien de temps cela vous amène à trouver? –
Ceci est inséré dans 'fs/exec.c', ici: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/ exec.c; h = 2d9455282744bce582e48e0ecec4f4a6d332a28c; hb = HEAD # l675 –
Environ 15 minutes en utilisant la référence croisée du noyau Linux http://lxr.linux.no/ :-) – rkhayrov