반응형
질문
쉘 내에서 쉘이 어떤 모드인지 어떻게 알 수 있을까요?
platform 모듈을 살펴봤지만, 이 모듈은 "실행 파일에 사용된 비트 아키텍처와 링크 형식에 대해서만 알려줍니다". 제 바이너리는 64비트로 컴파일되었고 (OS X 10.6에서 실행 중입니다), 그래서 항상 64비트를 보고하는 것 같습니다. 하지만 저는 여기에서 설명된 방법을 사용하여 32비트 모드로 강제로 설정하고 있습니다.
답변
하나의 방법은 여기서 sys.maxsize
를 확인하는 것입니다:
$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)
Windows에서는 동일한 명령을 다음과 같이 포맷하여 실행합니다:
python -c "import sys;print(\"%x\" % sys.maxsize, sys.maxsize > 2**32)"
sys.maxsize
는 Python 2.6에서 소개되었습니다. 이전 시스템에 대한 테스트가 필요한 경우 다음과 같이 약간 복잡한 테스트를 사용할 수 있습니다:
$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64
참고로, 이를 위해 platform.architecture()
를 사용하려는 유혹을 받을 수 있습니다. 하지만, 그 결과는 항상 신뢰할 수 없으며, 특히 OS X 유니버설 바이너리의 경우에는 특히 신뢰할 수 없습니다.
$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit True
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit False
반응형
댓글