posix — 가장 흔한 POSIX 시스템 콜

posix — 가장 흔한 POSIX 시스템 콜

posix 모듈은 C 표준과 POSIX 표준으로 표준화된 운영체제 기능(얇게 위장된 Unix 인터페이스)에 접근을 제공해요. 가용성: Unix.

출처: Python documentation

본문

이 모듈을 직접 import 하지 마세요. 대신 이 인터페이스의 이식 가능한 버전을 제공하는 os 모듈을 import 해요. Unix에서 os 모듈은 posix 인터페이스의 상위 집합을 제공해요. 비-Unix 운영체제에서는 posix 모듈을 사용할 수 없지만 os 인터페이스를 통해 그 하위 집합을 항상 사용할 수 있어요. os 를 import 하면 posix 대신 사용해도 성능 손실이 없어요. 또한 osos.environ 의 항목이 변경될 때 자동으로 putenv() 를 호출하는 등 추가 기능도 제공해요.

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

큰 파일 지원 (Large File Support)

AIX 와 Solaris 를 포함한 여러 운영체제는 int 와 long 이 32비트 값인 C 프로그래밍 모델에서 2 GiB보다 큰 파일을 지원해요. 이는 일반적으로 관련 크기·오프셋 타입을 64비트 값으로 정의해 이루어져요. 이런 파일을 큰 파일(large files)이라고 해요.

off_t 의 크기가 long 보다 크고 long long 이 off_t 이상이면 파이썬에서 큰 파일 지원이 활성화돼요. 이 모드를 켜려면 특정 컴파일러 플래그로 파이썬을 구성·컴파일해야 할 수도 있어요. 예를 들어 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 — 인터프리터가 시작될 당시의 문자열 환경을 나타내는 딕셔너리예요. 키와 값은 Unix에서는 bytes, Windows에서는 str 이에요. 예를 들어 environ[b'HOME'](environ['HOME'] Windows)은 홈 디렉터리의 경로명으로 C 의 getenv("HOME") 와 동등해요.

이 딕셔너리를 수정해도 execv(), popen(), system() 이 전달하는 문자열 환경에는 영향이 없어요. 환경을 변경해야 한다면 environexecve() 에 넘기거나, system()·popen() 의 명령 문자열에 변수 할당과 export 문을 추가하세요.

참고: os 모듈은 수정 시 환경을 업데이트하는 environ 의 대체 구현을 제공해요. os.environ 을 업데이트하면 이 딕셔너리는 구식이 돼요. posix 모듈을 직접 접근하는 것보다 os 모듈 버전을 사용하는 걸 권장해요.

더 알아보기 (Learn more)