Я пишу программу c для запуска в UNIX и пытаюсь использовать команду chmod. Изучив man-страницы, я знаю, что chmod нужны два параметра. во-первых, это биты разрешения, во-вторых, файл, который нужно изменить. Я хочу взять побитовое ИЛИ текущих битов разрешений файла и битов, введенных пользователем, и передать это в chmod(), чтобы изменить разрешения файла.
Я нашел функцию 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 — это тип long для восьмеричного преобразования пользовательского ввода.
Существуют ли какие-либо другие функции, которые могут возвращать биты разрешений для данного файла?
РЕДАКТИРОВАТЬ: отсутствует закрывающая скобка