Системный вызов fchown()#
Описание#
Системный вызов fchown() - эквивалент системного вызова chown(), используется для изменения владельца и группы файла.
fchown() изменяет владельца файла, на который ссылается дескриптор открытого файла, в отличие от chown() - изменяет владельца файла, указанного в path.
Синтаксис системного вызова:
#include <unistd.h>
int fchown(int fildes, uid_t owner, gid_t group);
Где:
#include <unistd.h>- включение заголовочного файла, содержащего определения используемых функций и констант;int- целочисленный тип данных;fildes- файловый дескриптор;uid_t owner- новый владелец файла;gid_t group- новая группа файла.
Пример использования#
Для изменения владельца файлов на текущего пользователя/группу используйте:
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int i;
int ecode = 0;
int fd;
for(i = 1; i < argc; i++)
{
if((fd = open(argv[i], O_RDONLY)) == -1)
{
perror(argv[i]);
ecode++;
} else
if(fchown(fd, getuid(), getgid()) == -1)
{
perror(argv[i]);
ecode++;
}
close(fd);
}
return (ecode);
}
Где:
#include <stdio.h>- включение заголовочного файла, содержащего определения функций ввода-вывода;#include <fcntl.h>- включение заголовочного файла, содержащего определения функций работы с файлами;#include <sys/types.h>- включение заголовочного файла, содержащего определения типов данных, используемых в системных вызовах;int main( int argc, char **argv )- объявление функцииmain- точки входа в программу,argc- количества переданных в программу аргументов,argv- массива указателей на строки, содержащие эти аргументы;int i... fd;- объявление используемых переменных;i- счетчик в циклеfor,ecode- отслеживание количества ошибок,fd- файловый дескриптор;for ( i = 1; i < argc; i++ )- начало циклаfor, который будет проходить по всем аргументам, переданным в программу, начиная с первого;if ( ( fd = ... else- проверка возможности открытия файла; если файл не может быть открыт, то будет выведено сообщение об ошибке и увеличен счетчик ошибок;if ( fchown( fd, ... ecode++;- изменение владельца и группы файла, используя файловый дескриптор; в случае ошибки будет выведено соответствующее сообщение и увеличен счетчик ошибок;close( fd );- закрытие файлового дескриптора после выполнения необходимых операций;return (ecode);- вывод количества произошедших ошибок.
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
man fchown