aperta unknown () flag passato da execve ()
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 ( Il mio codice riconosce grep per la bandiera non lo trova: 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? 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 */]
#define O_LARGEFILE 00100000
, ma l'altra bandiera sembra sorgere solo quando viene chiamato execve()
. matt@stanley:~/cpfs$ grep -RP '\b00*40\b' /usr/include/ | less
Soluzione
/* 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).