2009-08-27 13 views
6

La seguente riga nel mio programma C dovrebbe fornito tutto/gruppo/proprietario lettura e scritturapermessi dei file mkfifo non essere eseguiti correttamente

mkfifo("/tmp/dumbPipe", 0666) 

Ma una volta che eseguo il codice e controllare la non autorizzazione della scrittura bit sono stati fissati, io alla fine con

prw-r--r-- 

I proprietari sono gli stessi, è un problema dato che sto creando il tubo nella directory tmp? Quando eseguo chmod 666 dalla riga cmd, tutte le autorizzazioni vengono impostate correttamente.

risposta

9

Questo è un post senza commenti, solo citando i manuali. Brievity ecc

Citazione da uomo 3 mkfifo:

Si è modificato dalla umask del processo nel solito modo: i permessi del file creato sono (modalità & ~ umask).

Citazione da uomo 2 umask

Il valore di default tipico per l'umask processo è S_IWGRP | S_IWOTH (ottale 022). Nel caso usuale in cui l'argomento in modalità aperta (2) viene specificato come:

 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH 

    (octal 0666) when creating a new file, the permissions on the resulting file will be: 

     S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH 

    (because 0666 & ~022 = 0644; i.e., rw-r--r--). 
0

Salam, so che è troppo tardi, ma per gli altri utenti ho scelto di scrivere questo commento Anche se si preciso 0666 come permesso, dovresti sapere che c'è un altro fattore che si chiama "processo di creazione della modalità file", quindi la domanda è:

come modificare la creazione della modalità file processo corrente?

Risposta: all'inizio del programma di uso umask (permesso) - e dare 0000 come il permesso

http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

questo dovrebbe aiutare.

Problemi correlati