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;
}
輸出結果: