디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

소스 질문좀요 ㅜㅜ

런공갤로그로 이동합니다. 2011.12.09 19:59:19
조회 42 추천 0 댓글 0

#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>


int FILECopy(int argc, char *argv[]) {  // 파일을 복사하는 함수
 int rfd, wfd, n;        // 파일을 읽어올때 사용할 rfd와 쓸때 사용할 wfd 읽어올정보가있는지 판별할 n
 char buf[1024];        // 복사할 파일에서 읽은 정보를 임시저장하는 배열
 
 rfd = open(argv[2], O_RDONLY);   // 저수준으로 읽기전용으로 파일 오픈
 if(rfd == -1) {        // 읽지 못하면 종료
  perror("rfd file open err");
  exit(1);
 }
 wfd = open(argv[3], O_CREAT | O_TRUNC | O_WRONLY, 0644);  // 저수준의 쓰기파일 쓰기전용으로생성 없다면 생성하고 있다면 덮어쓴다
 if(wfd == -1) {        // 읽어올 파일을 생성하지 못하면 종료
  perror("wfd file open err");
  exit(1);
 }
 while ((n=read(rfd, buf, 128)) >  0 ) { // 읽어올 파일에서 정보를 받고 파일의 끝에 도달하면 종료
  if(write(wfd, buf,  n) !=n) {    // 쓸 정보가 있다면 종료
   perror("write err");
  }
   if(n == -1) {        // 읽지 못하면 종료
    perror("read err");
   }
 }
}

usage(void) {            // 아무런 옵션을 적지 않으면 사용법을 출력
 printf("-c(복사) -p(복사) -m(이동) -v(이동) -n(UID 및 GID 변경)\n");
 printf("-c 옵션 사용법 lm -c 파일및디렉토리명 파일및디렉토리명\n");
    printf("-p 옵션 사용법 lm -p 파일및디렉토리명 파일및디렉토리명\n");
 printf("-m 옵션 사용법 lm -m 파일및디렉토리명 파일및디렉토리명\n");
 printf("-v 옵션 사용법 lm -v 파일및디렉토리명 파일및디렉토리명\n");
 printf("-n 옵션 사용법 lm -n 파일및디렉토리명  UID GID\n");
}
int main(int argc, char *argv[]) {
 
 int rfd, wfd, delete, option, i=0;  // 사용할 변수 선언
 char input;
 struct stat statbuf;       // statbuf로 stat 구조체 선언
 struct passwd *u_info;      // u_info로 passwd 구조체 선언
 struct group *g_info;      // g_info로 group 구조체 선언
   char pathbuf[BUFSIZ]; //원본파일의 경로를 저장할 버퍼
 
 if(argc < 2) {   // 입력 받은 옵션이 없으면 옵션 사용법 출력
  usage();
  return 0;
 }

 if (stat(argv[2], &statbuf) == -1) { // 올바른 파일 정보가 입력되지 않으면 종료
  perror("stat err");
  exit(1);
 }
 if(S_ISREG(statbuf.st_mode) == 1) {  // 입력된게 파일이라면
  printf("선택하신 %s 는 파일입니다.\n", argv[2]);

  while ((option = getopt(argc, argv, "cpmvn:")) !=-1) { // 옵션으로 -c -p -m -v -n 구현 입력된 옵션이 없다면 실행하지 않는다
   switch (option) {
    case 'c':   // c옵션을 사용하면
     printf("파일 복사를 원하십니까? ( Y 또는 N ) : ");
     scanf("%c", &input);   // input에 식별자를 입력받는다.
    
     if (input == 'y' || input == 'Y') {
      FILECopy(argc, argv); //파일복사함수호출
      realpath(argv[3], pathbuf); //복사된 파일의 경로를  저장
      printf("파일 복사가 %s 에 성공적으로 이루어졌습니다.\n", pathbuf);
      break;
     }
     else
      printf("파일 복사가 이루어 지지 않았습니다.\n");
      break;
    case 'p':   // p옵션을 사용하면
     scanf("%c",&input);   // input에 식별자를 입력받는다.
     if (input == 0) {
      FILECopy(argc, argv); //파일복사함수호출
      realpath(argv[3], pathbuf); //복사된 파일의 경로를  저장
      printf("파일 복사가 %s 에 성공적으로 이루어졌습니다.\n", pathbuf);
      break;
     }
     else
      printf("파일 복사가 이루어 지지 않았습니다.\n");
      break;



여기서 'p' 옵션 이게 cp명령어의 f옵션 기능을 담당 하는데
y/n메세지 출력 없이 강제로 바로 파일 복사가 되게끔 하려면 if 안에 어떤 내용을 써야 될까요?ㅜㅠㅠ


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
293759 프갤에 정보처리기사 딴 형 잇어?? [10] ㅋㅋ(210.125) 11.12.12 193 0
293758 정전엔 뻘글이 최고지 DevilCruiser갤로그로 이동합니다. 11.12.12 36 0
293757 3학년 1학기는 23학점 들어야겠음 DevilCruiser갤로그로 이동합니다. 11.12.12 55 0
293755 검색을 하다가 실시간 검색어를 봤는데 나리링갤로그로 이동합니다. 11.12.12 58 0
293754 월요일 출근해 자리에 앉아..주말에 만난 소개팅녀를 생각해본다.. [1] 므해?갤로그로 이동합니다. 11.12.12 84 0
293753 야호 초인이 된거 같다! 일광면(119.198) 11.12.12 60 0
293751 일주일동안 자리를 비웠더니 ... [2] iljeomobolt갤로그로 이동합니다. 11.12.12 89 0
293750 자바 클래스간 메세지패싱은 call by value임? [1] DevilCruiser갤로그로 이동합니다. 11.12.12 54 0
293749 안드로이드 앱 개발하려고 하는데... [1] Diaman갤로그로 이동합니다. 11.12.12 113 0
293748 개간단한건데.. [1] 아놔(112.162) 11.12.12 81 0
293747 자바 존나 빡친다 ㅅㅂ [2] DevilCruiser갤로그로 이동합니다. 11.12.12 78 0
293746 C++ 최고의 책은 THE C++ PROGRAMMING LANGUAGE. [푸리울]갤로그로 이동합니다. 11.12.12 97 0
293745 c언어로 만든 테트리스ㅋㅋㅋㅋㅋ [2] ㅁㄴㅇㄹ(61.78) 11.12.12 179 0
293744 아흑 미치게따 앤트리 포인트를 못찾네.. [2] 일광면(119.198) 11.12.12 57 0
293743 게임 프로그래밍에 관심있는사람들 이 툴 완전 추천함 [17] 응잉앙앵(211.48) 11.12.12 235 0
293742 goto 왜안됨? 다 쓰라고 넣은거 아님? [9] 응잉앙앵(211.48) 11.12.12 139 0
293741 횽들 자바 입출력 질문좀. [1] DevilCruiser갤로그로 이동합니다. 11.12.12 44 0
293738 게임 만들거나 물리 그래픽엔진 그런쪽은 뭐라고함? [1] Lapter(121.159) 11.12.12 110 0
293737 아 시발 미안 이제 다한,, 근데 이거 몇학년꺼? [9] 응잉앙앵(211.48) 11.12.12 156 0
293735 [딴거] cancer.jpg... [2] 땡칠도사갤로그로 이동합니다. 11.12.12 124 0
293734 응잉앙앵님 멀엇나요 ㅠㅠ [3] 약므프(222.251) 11.12.12 50 0
293730 난수 생성 질문점 할게요 [14] fd(121.186) 11.12.12 81 0
293729 아아.. 다시 질문할께.. 자바 deepcopy 어떻게 해?? ㅁㄴㅇ(175.116) 11.12.12 34 0
293728 형들아 자바에서 리퍼런스타입(String)에서 주소말고 값 옮기려면??? [1] ㅁㄴㅇ(175.116) 11.12.12 54 0
293727 오늘의 구글 대문 라이토(112.214) 11.12.12 78 0
293726 NDK 랑 JNI랑 차이가 뭐임?? [2] dd(121.173) 11.12.12 75 0
293725 15kg 감량하면 외관상 많이 바뀌나여? [1] Lover♥갤로그로 이동합니다. 11.12.12 85 0
293724 C++ 잘하는 님들 종료할때 [4] 힝ㅠㅠ(121.149) 11.12.12 64 0
293723 신고합니다. 전 프갤의 뉴비입니다 [2] 좌파척결앞잡이갤로그로 이동합니다. 11.12.12 64 0
293722 p6 아키텍쳐 질문요 형님들 부두갤로그로 이동합니다. 11.12.12 33 0
293720 아 공부 해야 하는데 게임 학 ㅗ있다 1(121.146) 11.12.12 41 0
293718 보통 몇시쯤 퇴근함? [2] ㅁㄴㅂ(124.28) 11.12.12 68 0
293717 땡칠형님 마지막입니다 확인부탁드립니다 [1] 디아브로갤로그로 이동합니다. 11.12.12 84 0
293716 정확히 월차,연차 주는 회사 vs 급할때 막 봐주는 회사 [4] ㅅㄱㅅㄱㅅㄱ갤로그로 이동합니다. 11.12.12 156 0
293714 아 시발 개뻘짓하는중인가... [1] DevilCruiser갤로그로 이동합니다. 11.12.11 49 0
293712 하루에 15시간 일하는데 담배피러 가는거 안되는거냐 [6] ㅁㄴㅂ(124.28) 11.12.11 155 0
293711 음화화, 됐다 [7] 땡칠도사갤로그로 이동합니다. 11.12.11 125 0
293710 c++ 배우고 있는데 님들 공부 하는 방법좀 가르쳐 줘... [5] 1(121.146) 11.12.11 56 0
293709 헠! 데니스 리치선생님이 돌아가셨다구요? [1] ㅌㅅㅇ(183.99) 11.12.11 66 0
293708 형들 요즘 보안공부 어떤 쪽이 대세임? ㅌㅅㅇ(183.99) 11.12.11 126 0
293707 형들 이것 좀 봐줘( C 코딩 ) [6] C초보(203.236) 11.12.11 127 0
293706 땡칠님 현재 이렇게 출력됩니다 디아브로갤로그로 이동합니다. 11.12.11 51 0
293704 fedora 10 간단한질문 [3] 횽들(115.161) 11.12.11 48 0
293703 프갤에 오랜만에 오네영. [3] 로레알갤로그로 이동합니다. 11.12.11 63 0
293702 해킨토시 usb외장하드에도 깔려??? 흠좀무(118.176) 11.12.11 27 0
293701 횽들 해킨토시 USB외장하드에 깔아도 작동하나?? 흠좀무(118.176) 11.12.11 18 0
293700 방금 정밀검사 돌렸더니 하얀사람갤로그로 이동합니다. 11.12.11 43 0
293699 횽들 해킨토시 USB외장하드에 깔아도 작동하나?? 흠좀무(118.176) 11.12.11 31 0
293696 프로그래머 해외서도 취급 안 좋음? [4] 하얀사람갤로그로 이동합니다. 11.12.11 152 0
293695 움짤 하나 받아봤는데 [3] 딘윈체스터.갤로그로 이동합니다. 11.12.11 68 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2