Domanda

Quando si esegue uno script bash si trova sul mio file system FUSE, una chiamata open() è fatto con queste bandiere:

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

Le bandiere (0100040) dovrebbe corrispondere a quelli passati nel parametro 2 di open() . L'ignoto proviene bandiera da un href="http://linux.die.net/man/2/execve" rel="nofollow noreferrer"> execve() chiamata

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

Il mio codice riconosce #define O_LARGEFILE 00100000, ma l'altra bandiera sembra sorgere solo quando viene chiamato execve().

grep per la bandiera non lo trova:

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

Per lo più le bandiere dei terminali si trovano. Qualcuno può far luce su entrambi come rintracciare l'origine e il significato di questo flag, o dove trovare la sua definizione?

È stato utile?

Soluzione

/usr/include/linux/fs.h:

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

Altri suggerimenti

Questa potrebbe essere una combinazione di bandiere. (ORed).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top