0
我想使用open()創建文件。即使已定義,也沒有寫入權限
這裏是我的代碼的一部分:
int fd = open("testing", O_EXCL | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
if(fd == -1){
perror("Error");
return 1; }
輸出應該是一個文件名爲「測試」被創建,具有讀,寫和用戶,組和其他執行權限。
但我得到的是一個名爲「測試」文件,用此權限:對集團
-rwxr-xr-x
的寫權限和其他人失蹤。
我也使用
S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH |S_IXOTH)
嘗試,但我仍然得到同樣的結果。
我該如何解決這個問題?
因此,不鼓勵創建文件,同時設置模式? – Chin
通常你應該尊重umask,然後你可以在'open()'調用中設置模式。如果你想爲特定的'open()'調用覆蓋umask,最好用一個單獨的'fchmod()'調用完成。 – ninjalj
感謝您的解釋@ninjalj。 – Chin