함수 기능
파일의 소유자 id와 그룹 사용자 id를 변경하기 위한 시스템호출 함수
함수 원형
#include <unistd.h>
#include <sys/types.h>
int chown(const char *filepath, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *filepath, uid_t owner, gid_t group);
함수 파라메터
pathname
소유자를 변경할 파일의 경로
filedes
파일 디스크립터
owner
파일의 새 소유자
group
파일의 새그룹
함수 예제
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/stat.h>
#define MODE_EXEC (S_IXUSR|S_IXGRP|S_IXOTH)
int main(int argc, char *argv[]){
struct stat statbuf;
int i;
if(argc<2){
fprintf(stderr, "usage: %s <file1><file2>...<fileN>\n",argv[0]);
exit(1);
}
for(i=1; i<argc; i++){
if(stat(argv[i],&statbuf)<0){
fprintf(stderr, "%s : chmod error\n",argv[i]);
continue;
}
statbuf.st_mode |= MODE_EXEC;
statbuf.st_mode ^= (S_IXGRP|S_IXOTH);
if(chmod(argv[i],statbuf.st_mode)<0)
fprintf(stderr, "%s : chmod error\n",argv[i]);
else
printf("%s : file permission was changed.\n",argv[i]);
}
exit(0);
}
함수 결과
리눅스시스템 프로그래밍 - 홍지만 저
교재 내에 있는 예제를 바탕으로 작성한 글 입니다.
'C & LINUX' 카테고리의 다른 글
C / LINUX putenv(3) (0) | 2022.05.02 |
---|---|
C / LINUX link() unlink() (0) | 2022.05.02 |
C / LINUX chmod(2) fchmod(2) (0) | 2022.05.02 |
C / LINUX umask() (0) | 2022.05.02 |
C / LINUX access() (0) | 2022.05.02 |