我環顧這個網站和其他人,並找不到我可能的基本問題的答案。我在AIX工作,正在嘗試學習系統編程。史蒂文斯的書在這一點上有點多,我還沒有找到一本好的「實用」系統編程書。在Unix中使用fchmod
這就是說,我試圖用C編寫一個程序,它基本上做了一個腳本(我稱之爲「治癒」)的一段時間後寫的。這裏是非常簡單的腳本(在這個階段,我不會將用戶/組/其他人的權限更改爲完整 - 我以爲我會碰到下一個障礙;儘管如此,最簡單的方法的建議是受歡迎的):
## cure: changes permissions on all arguments to 777
sudo chmod 777 $*
現在,這裏是我的cure.c代碼:
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i, *fd;
//FILE *fd;
if(argc == 1)
printf("Usage: cure file1 file2 ...\n");
for(i = 1 ; i < argc ; i++)
{
fd = fopen(argv[i], "rw");
if(!fd)
printf("Cannot open %s\n", argv[i]);
fchmod(fd, S_IXUSR);
close(fd);
}
exit(0);
}
我已經做了一些調整,試圖讓程序工作。目前的情況是,這裏是GCC打印警告消息:
cure.c:在函數「主」:cure.c:默認情況下啓用分配從 兼容的指針類型:15:6:警告] cure.c:18:3:警告: 傳遞'fchmod'的參數1使指針變爲無指針的整數 cast [默認啓用] /usr/include/sys/stat.h:330:13:note: 預期'int',但參數類型爲'int *'cure.c:19:3:warning: 傳遞'close'的參數1使指針中的整數不帶 cast [缺省情況下啓用]/usr/include/unistd .h:142:12:note:expected 'int'but argument is of type'int *」
如果我改變我的FD變量到非定點INT,這就是我得到:
cure.c:在函數 '主':cure.c:15: 6:警告:賦值時將指針 整數沒有施放[默認啓用]
再次,我意識到這是很基本的,所以有一些我沒有收到尚未概念。
由於
非常感謝先生!我會投票給你,但我還太低。 – BWONG
沒問題!如果這能解決你的問題,即使你還沒有投票,你也應該能夠接受它。 – Useless
終於得到代表upvote你。再次感謝! – BWONG