函数umask
umask函數原型:
#include <sys/stat.h> mode_t umask(mode_t mask);分析:
-
在進程創建一個新的文件或目錄時,如調用open函數創建一個新文件,新文件的實際存取權限是mode與umask按照?mode&~umask運算以后的結果。umask函數用來修改進程的umask。
?
1. 測試代碼:
#include <stdio.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h>#define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)int main() {umask(0);if (creat("foo", RWRWRW) < 0) {perror("creat error");exit(1);}umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);if (creat("bar", RWRWRW) < 0) {perror("creat error");exit(1);}return 0; }輸出結果:
總結