簡體   English   中英

C-調用chmod函數會導致意外結果

[英]C - Calling chmod function causes unexpected results

我正在編寫一個需要能夠設置文件許可權的程序,但是由於任何原因,chmod都無法像我期望的那樣運行。 為了進行幾次測試,我嘗試創建兩個不同的文件(fileOne.txt和fileTwo.txt)。 fileOne.txt的權限應設置為600,而fileTwo.txt的權限應設置為777。

運行我的程序會導致以下結果:

fileOne.txt having permissions set to ---x-wx--T
fileTwo.txt having permissions set to -r----x--t

?? 什么?

下面是我的代碼。 我的printf的結果如預期的那樣(600,777),那么為什么chmod不會這樣呢?

printf("chmod = %d\n", (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
chmod(getHeader.file_name, (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);

UNIX文件系統權限是八進制的,而不是十進制的。 因此,將其乘以10010會得到意想不到的結果。

權限記錄在八進制所以600實際上是在0600在C(或384十進制)。

因此,代碼應為:

printf("chmod = %d\n", (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
chmod(getHeader.file_name, (int)getHeader.p_owner * 0100 + (int)getHeader.p_group * 010 + (int)getHeader.p_world);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM