Я пишу программу c для запуска в UNIX и пытаюсь использовать команду chmod. После консультаций с страницами man, я знаю, что 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] содержит строку трехзначное десятичное число, введенное пользователем, чтобы быть преобразованы в восьмеричные, а затем использовать поскольку биты разрешения должны быть побитовыми OR'ed,
argv [2] - это файл, который изменил его разрешение, также указанное пользователем.
octalPermissionString долго удерживает восьмеричное преобразование пользовательского ввода.
Есть ли какие-либо другие функции, которые могут возвращать бит разрешения для данного файла?
EDIT: отсутствует закрывающая скобка
Нет ничего в C, чтобы сделать это. Это конкретная реализация. –
Поле st_mode stat() может помочь ... – Sinkingpoint
@Quirliom +1 Спасибо, я нашел функцию stat() всего несколько минут назад. Теперь, пытаясь выяснить, как получить st_mode-поле из структуры stat, перейти к chmod() – trawww