심볼릭 링크에 대한 파일 연산

심볼릭 링크에 대한 파일 연산

심볼릭 링크(symbolic link)를 다루는 파일 연산은 그 링크가 가리키는 대상과는 조금 다르게 동작할 때가 많아요. GNU Fortran이 심볼릭 링크에 대해 INQUIRE, OPEN, CLOSE 문을 어떻게 처리하는지 이 장에서 정리해 드릴게요.

출처: File operations on symbolic links (The GNU Fortran Compiler)

본문

이 장은 심볼릭 링크를 지원하는 시스템에서, GNU Fortran이 심볼릭 링크에 대한 파일 연산을 어떻게 다루는지 문서화해요.

  • '파일로 질의' 형식의 INQUIRE 문 결과는 심볼릭 링크가 가리키는 대상(target)과 관련돼요. 예를 들어 INQUIRE(FILE="foo",EXIST=ex)foo가 존재하는 파일을 가리키는 심볼릭 링크면 ex.true.로, 존재하지 않는 파일을 가리키면('dangling' 심볼릭 링크) .false.로 설정해요.

  • 심볼릭 링크에 STATUS="NEW" 지정자를 쓴 OPEN 문을 사용하면, 링크가 존재하는 대상을 가리키든 dangling이든 에러 조건이 발생해요.

  • 심볼릭 링크가 연결된 상태에서 STATUS="DELETE" 지정자를 쓴 CLOSE 문을 사용하면 그 대상이 아니라 심볼릭 링크 자체가 삭제돼요.

정리하면 GNU Fortran은 심볼릭 링크를 대상 파일과 똑같이 취급하되, 몇몇 파일 연산에서는 링크 자체를 구분해 다뤄요. INQUIRE는 실제로 그 링크가 유효한 대상으로 이어지는지(존재하는 파일인지)를 기준으로 판단하고, STATUS="NEW"로 열려는 시도는 링크를 새 파일로 만들 수 없으니 에러로 처리해요. 또 CLOSESTATUS="DELETE"는 링크가 가리키는 실체 파일을 지우는 게 아니라 링크만 정리해요.

이 동작들은 심볼릭 링크를 지원하는 시스템에서만 의미가 있어요. 심볼릭 링크가 없는 파일 시스템에서는 일반 파일과 같은 방식으로 처리돼요.

더 알아보기