tell — 열린 채널의 현재 접근 위치 반환하기

tell — 열린 채널의 현재 접근 위치 반환하기

파일을 읽다가 위치를 되돌리고 싶거나, 나중에 다시 그 지점으로 돌아가야 할 때가 있어요. tell은 열린 채널에서 지금 읽기/쓰기 위치가 어디인지 알려주는 명령이에요.

출처: Tcl 공식 문서 - tell

본문

tell channelId

tellchannelId에서 현재 접근 위치를 나타내는 정수 문자열을 반환해요. 반환된 값은 바이트 오프셋이라서, 채널을 특정 위치로 설정하기 위해 seek에 넘길 수 있어요. read처럼 문자 단위가 아니라 바이트 단위라는 점에 주의하세요. 탐색(seeking)을 지원하지 않는 채널에 대해서는 -1을 반환해요.

channelId는 열린 채널의 식별자여야 해요. Tcl 표준 채널(stdin, stdout, stderr), open이나 socket 호출의 반환 값, 또는 Tcl 확장이 제공하는 채널 생성 명령의 결과가 될 수 있어요.

예제

파일 채널에서 한 줄을 읽을 때, 그 줄이 foobar로 시작하는 경우에만 읽는 예시예요.

# Save the offset in case we need to undo the read...
set offset [tell $chan]
if {[read $chan 6] eq "foobar"} {
    gets $chan line
} else {
    set line {}
    # Undo the read...
    seek $chan $offset
}

더 알아보기

  • file — 파일 이름·속성 다루기
  • open — 채널 열기
  • close — 채널 닫기
  • gets — 한 줄 읽기
  • seek — 채널 위치 이동