파일처리

파일처리 ch2) 파일처리 기본 연산에 대한 소개

chris3471 2025. 3. 23. 21:52
728x90
반응형

physical Files and Logical Files

1. Physical File

  • 실제로 디스크나 저장 장치에 존재하는 파일.
  • 운영체제(OS)가 파일 시스템을 통해 관리.
  • 파일 디렉토리에 존재하며, OS의 인터페이스를 통해 접근 가능.

2. Logical File

  • 프로그램이 인식하는 파일.
  • 프로그램은 어떤 물리적 파일이 사용될지 알지 못한 채 논리적 파일을 다룸.

 

물리적 파일과 논리적 파일

 

 

Physical files과 Logical files의 연결

 

1. Mainframe era : Job Control Language 을 통해 파일 연결

2. Unix and DOS era 

 - 프로그램 내 명령으로 파일 연결(os 시스템 호출 또는 프로그래밍 언어의 일부)

 - ex) select inp_file assign to "myfile.dat" (in COBOL)

         fd = open("myfile.dat", O_RDWR) (in C)

 

파일 관리를 위한 System Calls vs C Libraries

1. System Calls (운영체제 시스템 호출)

  - 파일을 열고(open), 읽고(read), 쓰고(write) 등을 위한 시스템 호출

  - 파일 디스크립터(fd)를 반환하여 파일을 다룸

 

2. C Libraries (c 표준 라이브러리)

 - c언어에서 제공하는 라이브러리 함수들

 - 스트림(stream) 기반으로 관

 

검정색(시스템 콜), 파란색(c 표준 라이브러리)

 

기능 시스템 호출 (System Calls) C 라이브러리 (stdio.h)
파일 열기 fd = open(filename, flags [, pmode]) fp = fopen(filename, type)
파일 닫기 close(fd) fclose(fp)
파일 위치 이동 lseek(fd, offset, origin) fseek(fp, offset, origin)
파일 읽기 read(fd, buf, size) fread(buf, num, len, fp)
파일 쓰기 write(fd, buf, size) fwrite(buf, num, len, fp)

 

 

Opening files

파일 열기 :

 1. 기존 파일을 열기

 2. 새로운 파일을 만들고 열기

 

파일 열기

 

  • fd: 파일 디스크립터(정수)
  • filename: 파일 이름(문자열)
  • flags: 파일 열기 옵션
    • O_APPEND: 기존 파일 끝에 추가
    • O_CREAT: 새 파일 생성
    • O_EXCL: 파일이 존재하지 않을 때만 생성
    • O_RDONLY: 읽기 전용
    • O_RDWR: 읽기 및 쓰기
    • O_TRUNC: 기존 내용을 지우고 새로 작성
    • O_WRONLY: 쓰기 전용

 

  • pmode: 보호 모드(파일 권한 설정)
    • ex) pmode = 0751 (3자리 8진수로 설정) => [소유자, 그룹, 기타 사용자]의 읽기, 쓰기, 실행 권한 설정

pmode 사용 예시

 

 

Closing files

파일 닫기 :

 - 파일을 닫음으로써 논리적 파일 이름이나 파일 디스크립터를 다른 파일에 사용할 수 있도록 함

 - 파일에 모든 것이 쓰였다는 것을 확실하게 해준다

 - 파일을 닫지 않으면 메모리 누수 가능성이 생김

 

+ fflush (파일을 작성 도중에 사용하면 파일이 확실하게 작성되게 해준다.)

 

ex) close(fd); (fd : file descriptor)

 

 

Reading & Writing

입력/출력 작업 : 

 - 저수준 시스템 호출

 

- c 표준 라이브러리 함수

 

Seeking

파일 내 위치 이동 : 

 - lseek(source_file, offset, origin) or fseek(file, byte_offset, origin) 을 사용하여 파일 내 특정 위치로 이동

 - origin은 SEEK_SET, SEEK_CUR, SEEK_END로 지정 가능

 

 

예제 프로그램

예제 프로그램

 

다음 프로그램은 파일을 읽고 특정 위치(501 바이트)부터 데이터를 출력하는 예제임

 

프로그램 동작 과정

1. 사용자에게 파일명을 입력받음

2. 입력 받은 파일을 읽기모드(O_RDONLY)로 열기

3. 501 바이트 위치로 이동(lseek)

4. 파일 끝까지 한 글자씩 읽어서 출력 (read & write)

5. 파일 닫기 (close(fd))

728x90
반응형