eof — 채널의 파일 끝 조건 확인하기

eof — 채널의 파일 끝 조건 확인하기

파일을 끝까지 읽었는지, 아니면 아직 더 읽을 데이터가 남았는지 알아야 할 때가 있어요. Tcl에서 채널(channel)을 읽다 보면 언제 데이터가 끝났는지 구분이 필요해요. 그때 쓰는 명령이 eof예요.

출처: Tcl 공식 문서 — eof

본문

시그니처

eof channelId

설명

channelId에 대한 가장 최근 입력 연산(예: gets) 중에 파일 끝 조건이 발생했으면 1을, 아니면 0을 반환해요.

channelId는 표준 채널(stdin, stdout, stderr), open·socket 호출의 반환값, 또는 Tcl 확장이 제공한 채널 생성 명령의 결과처럼 열려 있는 채널의 식별자여야 해요.

예제

파일 내용을 한 줄씩 읽어 출력하는 예제예요:

set f [open somefile.txt]
while {1} {
 set line [gets $f]
 if {[eof $f]} {
 close $f
 break
 }
 puts "Read line: $line"
}

파일 내용을 고정 크기 레코드로 읽어 출력하는 예제예요:

set f [open somefile.dat]
fconfigure $f -translation binary
set recordSize 40
while {1} {
 set record [read $f $recordSize]
 if {[eof $f]} {
 close $f
 break
 }
 puts "Read record: $record"
}

더 알아보기

  • file, open, close, fblocked, Tcl_StandardChannels
  • 키워드: channel, end of file