posix — 가장 흔한 POSIX 시스템 호출

posix — 가장 흔한 POSIX 시스템 호출

이 모듈은 C 표준과 POSIX 표준으로 표준화된 운영 체제 기능(겉으로 살짝 드러나 있는 유닉스 인터페이스)에 접근할 수 있게 해 줘요.

가용성: Unix.

이 모듈을 직접 임포트하지 마세요. 대신 이 인터페이스의 이식 가능한 버전을 제공하는 os 모듈을 임포트해요. 유닉스에서 os 모듈은 posix 인터페이스의 상위 집합을 제공해요. 유닉스가 아닌 운영 체제에서는 posix 모듈을 사용할 수 없지만, 그 하위 집합은 항상 os 인터페이스를 통해 사용할 수 있어요. os가 임포트되면 posix 대신 os를 사용해도 성능상 손해가 없어요. 게다가 osos.environ의 항목이 바뀔 때 putenv()를 자동으로 호출하는 것 같은 추가 기능도 제공해요.

오류는 예외로 보고돼요. 타입 오류에는 평소의 예외가 주어지고, 시스템 호출이 보고한 오류는 OSError를 발생시켜요.

출처: Python 표준 라이브러리

본문

대용량 파일 지원 (Large File Support)

AIX와 Solaris를 포함한 여러 운영 체제는 intlong이 32비트 값인 C 프로그래밍 모델에서 2 GiB보다 큰 파일을 지원해요. 이는 보통 관련 크기·오프셋 타입을 64비트 값으로 정의해서 이루어져요. 그런 파일을 가끔 large file(대용량 파일)이라 부르기도 해요.

Python에서는 off_t의 크기가 long보다 크고 long longoff_t 이상의 크기일 때 대용량 파일 지원이 활성화돼요. 이 모드를 켜려면 특정 컴파일러 플래그로 Python을 구성·컴파일해야 할 수도 있어요. 예를 들어 Solaris 2.6과 2.7에서는 다음과 같이 해야 해요:

CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./configure

대용량 파일을 지원하는 Linux 시스템에서는 이렇게 하면 될 수 있어요:

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./configure

주요 모듈 내용 (Notable Module Contents)

os 모듈 문서에 설명된 많은 함수에 더해, posix는 다음 데이터 항목을 정의해요.

posix.environ

인터프리터가 시작된 시점의 문자열 환경을 나타내는 사전이에요. 키와 값은 유닉스에서는 bytes, Windows에서는 str이에요. 예를 들어 environ[b'HOME'](Windows에서는 environ['HOME'])은 홈 디렉터리의 경로명으로, C의 getenv("HOME")과 같아요. 이 사전을 수정해도 execv(), popen() 또는 system()이 전달하는 문자열 환경에는 영향을 주지 않아요. 환경을 바꾸려면 execve()environ을 넘기거나, system()이나 popen()의 명령 문자열에 변수 할당과 export 문을 추가해야 해요.

버전 3.2에서 변경: 유닉스에서 키와 값이 bytes가 됨.

참고os 모듈은 수정 시 환경을 갱신하는 environ의 대체 구현을 제공해요. 또한 os.environ을 갱신하면 이 사전은 쓸모없게 돼요. posix 모듈로 직접 접근하는 것보다 os 모듈 버전을 사용하는 것을 권장해요.