2009-08-27 17 views
6

następującą linię w moim programie C powinna dostarczać wszystkich/Grupa/właściciel uprawnienia Odczyt i Zapisuprawnienia do plików mkfifo nie są wykonywane prawidłowo

mkfifo("/tmp/dumbPipe", 0666) 

Ale gdy I wykonanie kodu i sprawdzeniu non zgody zapisu bitów zostały ustawione, kończę z

prw-r--r-- 

Właściciele są takie same, Czy to jest problem, ponieważ jestem tworzenia potoku w katalogu tmp? Kiedy uruchamiam chmod 666 z wiersza cmd, wszystkie uprawnienia są poprawnie ustawione.

Odpowiedz

9

To jest wpis bez komentarzy, tylko cytowanie podręczników. Brievity itp

cytat z Man 3 mkfifo:

jest modyfikowane przez umask procesu w zwykły sposób: prawa tworzonego pliku to (tryb & ~ umask).

Cytat Man 2 umask

Typowa Domyślna wartość umask procesu jest S_IWGRP | S_IWOTH (ósemkowy 022). W zwykłym przypadku, gdy argument tryb do open (2) jest określony jako:

 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, Wiem, że jest późno, ale dla innych użytkowników postanawiam napisać ten komentarz nawet jeśli dokładny 0666 jako uprawnienie, powinieneś wiedzieć, że istnieje inny czynnik, który jest nazywany "tworzeniem trybu pliku procesu", więc pytanie brzmi:

jak zmienić obecne tworzenie trybu pliku procesu?

Odpowiedź: użycie umask (zezwolenie) na początku programu - i dać 0000 za zgodą

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

to powinno pomóc.

Powiązane problemy