파일 생성하기

creat 함수
기능
       파일을 생성한다.
기본형
       int creat(const char *pathname, mode_t mode);
       pathname : 생성하고자 하는 파일 이름
       mode : 생성할 파일에 대한 접근 권한
반환값
       성공 : 양의 정수 (파일 식별자)
       실패 : -1
헤더 파일
       <sys/types.h>
       <sys/stat.h>
       <fcntl.h>


                  fd = creat("jkim", 0644)


                  fd = open("jkim", O_WRONLY | O_CREAT | O_TRUNC, 0644)


파일 생성하기

                 fd = open("jkim", O_RDWD | O_CREAT | O_TRUNC, 0644)


                  fd = open("jkim", O_WRONLY | O_CREAT | O_APPEND, 0644)



      c 언어  |  2007. 9. 13. 11:57




#include <fcntl.h>
#include <unistd.h>
#define MAX 1024

main(int argc, char *argv[])
{
   int fd1, fd2;
   int count;
   char buf[MAX];
   /* 명령 라인의 인수가 3개가 아니면 오류 메시지를 출력하고 종료한다. */
   if (argc != 3) {
      perror("argc is not 3");
      exit(1);
   }
   /* argv[1] 파일을 읽기 전용으로 연다. 실행 예에서는 file1이 된다. */
   if ((fd1=open(argv[1], O_RDONLY)) == -1) {/
      perror("open failed");
      exit(1);
   }  
   if ((fd2=open(argv[2], O_WRONLY | O_CREAT, 0644)) == -1) {
      perror("open failed");
      exit(1);
   }
   /* fd1 파일로부터 MAX바이트만큼의 데이터를 읽어서 buf에 저장 */
   while ((count=read(fd1, buf, MAX)) > 0) {
      /* fd2 파일에 buf에 있는 count바이트만큼의 데이터 쓰기 */
      if (write(fd2, buf, count) != count) {
         perror("write failed");
         exit(1);
      }
   }
   close(fd1);
   close(fd2);
   exit(0);
}
해설
(1) 16라인에서 file1을 읽기 전용으로 열고, 20라인에서 file2를 쓰기 전용으로 연다.
(2) 그리고 25라인에서 file1로부터 1024바이트를 읽어 buf에 저장한다.
(3) 27라인에서 buf에 저장된 1024바이트의 데이터를 file2에 쓴다.
(4) 다시 25라인에서 file1로부터 1024바이트를 읽어 들이려 하는데 1000 바이트의 데이터뿐이므로 1000바이트만 읽어 buf에 저장한다. count에는 실제 읽어 들인 바이트 수인 1000이 저장된다.
(5) 27라인에서 buf에 저장된 1000바이트의 데이터를 file2에 쓴다. 그러면 파일 복사가 종료된다.


실행화면

      c 언어  |  2007. 9. 13. 11:51




      c 언어  |  2007. 9. 13. 11:15



sokoban's Blog is powered by Daum & Tattertools