반응형
//mycp app by changmin, ckdals0115@naver.com
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define MAX 64
void main(int argc,char* argv[]){
int original, copy, r_size;
char buf[MAX];
struct stat attribute;//stat 구조체선언 mode_t st_mode로 파일 권한을 가져오기위해
//쓰기잘못
if(argc != 3){
printf("Wrong useage! USAGE : %s \"original_file\" \"copy_file\" \n",argv[0]);
exit(-1);}
//orignal 파일 열기
original = open(argv[1],O_RDONLY);
//파일 open 실패시
if(original < 0){
printf("can't open file\n");
exit(-1);}
if(stat(argv[1], &attribute)==-1){//original file 속성가져옴 실패시 에러
printf("getting attribute error\n");
exit(-1);}
mode_t original_permisson = attribute.st_mode;//original의 st_mode를 가져옴
copy = open(argv[2],O_WRONLY|O_CREAT|O_EXCL,original_permisson);//쓰기로 읽고 권한을 original파일의 권한을 줌
//파일 open 실패시
if(original < 0){
printf("can't open file\n");
exit(-1);}
//파일끝까지 읽고 씀
while((r_size = read(original,buf,MAX)) >0){
write(copy,buf,r_size);
}
}
728x90
반응형
'공부 > 운영체제&시스템프로그래밍' 카테고리의 다른 글
New Architectural state structure (0) | 2021.06.21 |
---|---|
myshell (0) | 2020.07.16 |
EXT2 file system 실습 (6번 디렉토리안의 82번 파일 찾기) (0) | 2020.07.16 |