我在寫一個要在UNIX上運行的c程序,並嘗試使用chmod命令。在查閱手冊頁後,我知道chmod需要兩個參數。第一個是權限位,第二個是要更改的文件。我想要獲取文件當前權限位和用戶輸入的權限位的位或,並將其提供給chmod()以更改文件的權限。有沒有C函數來獲取文件的權限?
我找到了access()
函數,但在找出如何使用它來獲取指定文件的權限位時遇到了困難。
我現在所擁有的是:
octalPermissionString = strtol(argv[1], (char**)NULL, 8);
if(chmod(argv[2], octalPermissionString | (access(argv[2], octalPermissionString)) < 0) {
fprintf(stderr, "Permissions of file %s were not changed.\n");
}
其中:
的argv [1]包含由用戶將被轉換爲八進制數,然後輸入一個三位數字的十進制數的字符串中使用作爲權限位進行按位「或」運算,
argv [2]是要更改權限的文件,也是由用戶指定的。
octalPermissionString是一個很長的容納八進制轉換的用戶輸入。
是/還有其他函數可以返回給定文件的權限位嗎?
編輯:缺少結束括號
C中沒有任何東西可以做到這一點。它是特定於實現的。 –
stat()的st_mode字段可能有幫助... – Sinkingpoint
@Quirliom +1謝謝,我幾分鐘前發現了stat()函數。現在試圖弄清楚如何將st_mode字段從stat結構中傳遞給chmod() – trawww