파일 끝
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
파일 끝(EOF)은 파일의 끝을 나타내는 개념으로, 프로그래밍과 데이터 저장소에서 중요한 역할을 한다. C 표준 라이브러리에서는 `EOF` 기호 값을 사용하여 파일 끝 조건을 표시하며, 실제 값은 구현에 따라 다르지만 일반적으로 -1이다. 터미널 입력의 경우, 운영체제에 따라 파일의 끝을 나타내는 문자가 다르며, 유닉스 계열 시스템에서는 Control-D, DOS 및 Windows에서는 Control-Z를 사용한다. 자기 테이프에서는 테이프 마크를 사용하여 파일의 끝을 표시하며, 테이프 종료는 두 개의 테이프 마크로 표시된다.
더 읽어볼만한 페이지
- 컴퓨터 파일 - 전자 문서
전자 문서는 19세기 전신 기술에서 시작되어 컴퓨터 기술 발전과 함께 발전해 온, 정보를 전자적인 형태로 기록한 문서를 의미하며, 파일 포맷 비호환성 등의 과제 해결 노력과 함께 대한민국에서는 법적 효력을 인정받고 신뢰성을 높이는 제도들이 시행되고 있다. - 컴퓨터 파일 - 긴 파일 이름
긴 파일 이름은 FAT 파일 시스템에서 긴 파일 이름을 지원하기 위해 사용되는 기술이며, 마이크로소프트는 VFAT 규칙을 통해 호환성을 확보하고 윈도우 95에서 처음 LFN을 도입했다. - C 표준 라이브러리 - C 자료형
C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다. - C 표준 라이브러리 - Return-to-libc 공격
Return-to-libc 공격은 버퍼 오버플로우 공격의 한 종류로서, 스택에 임의의 코드를 삽입하는 대신 이미 존재하는 실행 가능한 코드를 재사용하여 NX 비트와 같은 기본적인 버퍼 오버플로우 방지 기술을 우회하는 기법이다.
파일 끝 | |
---|---|
파일 시스템 | |
설명 | 파일에서 더 이상의 데이터가 없음을 나타내는 표시. |
사용법 | 데이터 스트림에서 더 이상 읽을 것이 없음을 나타내는 데 사용됨. 파일 시스템, 데이터 전송, 콘솔 입력 등 다양한 상황에서 사용됨. |
구현 방식 | 운영 체제 및 프로그래밍 언어에 따라 다르게 구현됨. C 언어에서는 `EOF` 상수로 정의됨. 일부 시스템에서는 특정 제어 문자를 사용하여 파일 끝을 표시함. |
역사 | 원래 CP/M과 같은 운영 체제에서 파일 크기를 미리 알 수 없는 텍스트 파일에 데이터를 저장하는 데 사용됨. 오늘날에는 파일 시스템 메타데이터에 파일 크기를 저장하는 방법이 더 일반적이지만, 여전히 데이터 스트림의 끝을 표시하는 데 사용됨. |
추가 정보 | |
관련 용어 | Ctrl+D here document |
2. EOF 값
C 표준 라이브러리에서 getchar와 같은 문자 읽기 함수는 파일 끝 조건이 발생했음을 나타내기 위해 `EOF` 기호 값(매크로)과 동일한 값을 반환한다. `EOF`의 실제 값은 구현에 따라 다르며 음수여야 한다(하지만 일반적으로 glibc와 같이 -1이다). 블록 읽기 함수는 읽은 바이트 수를 반환하며, 이 값이 요청한 것보다 적으면 파일 끝에 도달했거나 오류가 발생한 것이다(어떤 오류인지 확인하려면 `errno` 또는 `ferror`와 같은 전용 함수를 확인해야 함).
터미널에서의 입력은 (장치가 연결 해제되지 않는 한) 실제로 "종료"되지 않지만, 터미널에 여러 "파일"을 입력할 수 있도록 입력의 종료를 나타내는 키 배열이 예약되어 있다.
3. EOF 문자
유닉스와 같은 시스템에서는 키 입력을 EOF로 변환하는 것은 터미널 드라이버가 담당하며, 이 덕분에 프로그램은 터미널과 다른 입력 파일을 구별할 필요가 없다. 보통 줄의 시작 부분에 있는 Control-D 문자가 파일 종료를 의미하는 것으로 변환된다. 실제 Control-D (ASCII 04) 문자를 입력하려면, "따옴표" 명령 문자(주로 Control-V)를 앞에 붙여야 한다. AmigaDOS에서는 Control-D 대신 Control-\를 사용한다.
DOS, Windows 및 CP/M, 그리고 DEC 운영 체제(예: RT-11, VMS)에서는 터미널에서 읽을 때 EOF가 발생하지 않는다. 대신, 프로그램은 소스가 터미널(또는 다른 "문자 장치")임을 인지하고, 미리 약속된 문자나 시퀀스를 EOF로 해석한다. 일반적으로 ASCII 코드 26 (0x1A)인 Control-Z가 사용된다.
몇몇 MS-DOS 셸(COMMAND.COM)과 운영 체제 유틸리티 프로그램(EDLIN 등)을 포함한 일부 MS-DOS 프로그램은 텍스트 파일 안의 Control-Z를 의미 있는 데이터의 끝으로 간주하거나, 텍스트 파일을 쓸 때 Control-Z를 끝에 추가하기도 했다.
3. 1. 유닉스 계열 시스템
유닉스에서 키 입력의 파일 끝(EOF) 변환은 터미널 드라이버에 의해 수행되므로, 프로그램은 터미널과 다른 입력 파일을 구별할 필요가 없다. 기본적으로, 줄의 시작 부분에 있는 Control-D (전송 종료 문자)가 파일 종료 표시기로 변환된다. 실제 Control-D (ASCII 04) 문자를 입력 스트림에 삽입하려면, "따옴표" 명령 문자(일반적으로 Control-V)를 앞에 붙인다. AmigaDOS는 Control-D 대신 Control-\를 사용한다.
3. 2. DOS, Windows
DOS 및 Windows (그리고 CP/M 및 DEC 시스템)에서 터미널로부터의 읽기는 EOF를 생성하지 않는다. 프로그램은 소스가 터미널임을 인식하고, 예약된 문자(Control-Z, ASCII 코드 26)를 파일 종료 표시자로 해석한다. 일부 MS-DOS 프로그램(예: COMMAND.COM, EDLIN)은 텍스트 파일에서 Control-Z를 의미 있는 데이터의 끝으로 처리하거나, 텍스트 파일 작성 시 끝에 Control-Z를 추가한다. 이는 다음 두 가지 이유 때문이다.
4. 테이프 마크
ANSI X3.27-1969 자기 테이프 표준에서 파일의 끝은 '''테이프 마크'''로 표시되었으며, 이는 약 약 8.89cm의 테이프 갭과 9트랙 테이프의 경우 문자 `0x13`(16진수)이 포함된 단일 바이트와 IBM 7트랙 테이프의 경우 `017`(8진수)가 포함된 단일 바이트로 구성되었다. '''테이프 종료'''(End-of-tape, EOT)는 일반적으로 두 개의 테이프 마크로 표시되었다. 이것은 IBM 360 등에서 사용된 표준이다. 테이프의 물리적 끝이 임박했음을 알리기 위해 사용된 반사 스트립도 '''EOT''' 마커라고 불렸다.
참조
[1]
웹사이트
Shell Here Document Overview
http://content.hccfl[...]
hccfl.edu
2014-05-28
[2]
문서
The GNU C Library
https://www.gnu.org/[...]
[3]
문서
comp.lang.c FAQ list
http://c-faq.com/std[...]
[4]
문서
TAPE MARK
https://www.loc.gov/[...]
Library of Congress
[5]
웹인용
Shell Here Document Overview
http://content.hccfl[...]
hccfl.edu
2014-05-28
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com