현재 os.fork 및 os.system 명령을 사용하여 여러 명령을 설정하고 실행하고 있습니다. resource.setrlimit을 통해 시간과 메모리 제한을 설정했는데 정상적으로 작동하는 것 같습니다. 그러나 각 프로그램은 메모리 뚜껑 때문에 스스로 충돌하는 방식을 가지고 있습니다 - Python 프로그램이 MemoryError를 던지고 C++ 프로그램에 잘못된 할당이있을 수 있습니다.os.system의 메모리 제한을 감지하는 방법
내가 알고 싶은 것은 어떻게 탐지 할 수 있습니까? os.system 명령이 메모리 제한 제한 (시간 초과 또는 다른 완료 방법으로 가정 됨)으로 인해 실행을 완료 한 경우. 내가 성공하지 않고 다음을 시도했다 :
try:
status = os.system(command)
except MemoryError:
# Never actually makes it here...
편집을 : 정말 지금은 유닉스 시스템에만 관심입니다.
"Unix에서 반환 값은 wait()에 지정된 형식으로 인코딩 된 프로세스의 종료 상태입니다. POSIX는 C system() 함수의 반환 값 의미를 지정하지 않으며, 파이썬 함수의 반환 값은 시스템에 따라 다릅니다. " 그래서 당신은 자신의 시스템의 실제 오류에이 값들을 매핑하는 dict을 할 수 있습니다. – lc2817
해당 값이 응용 프로그램에 종속적이지 않습니까? 즉, C++ 개발자는 그가 마음에 들었다면 exit (42)를 호출 할 수 있었고 그 의미가 무엇인지 알지 못한다. – haz
물론 코드를 몇 가지 표준을 따라야합니다. 그러나 그것은 두 프로그램이 올바르게 통신하기를 원할 때마다 사실입니다. – lc2817