Я просмотрел этот сайт и другие и не смог найти ответ на мою вероятную элементарную проблему. Я нахожусь в AIX на работе и пытаюсь изучить системное программирование. Книга Стивенса немного в этом вопросе, и я не нашел хорошей «практической» книги по системному программированию.Использование fchmod в Unix
Это говорит о том, что я пытаюсь написать программу на языке 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);
}
Я сделал некоторые настройки, пытаясь получить программу для работы. Как она стоит сейчас, вот предупреждающие сообщения, что НКУ печатает:
cure.c: В функции «главный»: cure.c: 15: 6: предупреждение: назначение из несовместимого типа указателя [включены по умолчанию ] cure.c: 18: 3: warning: Передача аргумента 1 из 'fchmod' делает целое число из указателя без cast [включено по умолчанию] /usr/include/sys/stat.h:330:13: note: ожидаемый 'int', но аргумент имеет тип 'int *' cure.c: 19: 3: warning: Передача аргумента 1 из 'close' делает целое число от указателя без cast [включено по умолчанию]/usr/include/unistd .h: 142: 12: примечание: ожидается 'int', но аргумент имеет тип 'int *
Если я изменить переменную Fd к не-указательного междунар, это то, что я получаю:
cure.c: В функции 'главный': cure.c: 15: 6: предупреждение: назначение делает целое число от указателя без приведения [по умолчанию включено]
Опять же, я понимаю, что это очень элементарно, так что есть некоторые понятия, которые я еще не получаю.
Благодаря
Большое спасибо, сэр! Я бы проголосовал за тебя, но я слишком скромный. – BWONG
Нет проблем! Если это исправляет вашу проблему, вы сможете принять ее, даже если вы еще не можете проголосовать. – Useless
Наконец-то получил репутацию, чтобы поддержать вас. Еще раз спасибо! – BWONG