2012-04-10 5 views
0

난과 같이, 서브 프로세스 호출하여, 루프에서 일련의 조작을 수행하는 파이썬 스크립트를 쓰고 있어요 호출 다른 쉘에서는 잘 작동합니다. 그러나 대본 안에서 그들은 항상 깨집니다. 나는 그 오류의 출처를 추적 해왔고, 출력 파일이 끝까지 잘 리게 된 것 같습니다 (이전의 것들이 완료되지 않은 상태에서 호출이 이루어지고 있다는 것을 알게되었습니다).예기치 않은 동작이

Popop 개체의 wait() 메서드를 사용하여 subprocess.Popen을 시도했지만 아무 소용이 없습니다. 스크립트는 여전히 중단됩니다.

여기에 어떤 아이디어가 있습니까?

+0

'os.system'과'subprocess.call' 둘 다 시스템 호출이 완료되기를 기다렸다가 리턴합니다. 프로그램을 디버깅하는 데 도움이 필요하면 더 많은 정보가 필요합니다. 또한'os.system ('python read-svm-rank.py')'이 매우 의심 스럽습니다. read -svm-rank.py에서 필요한 것을 가져올 수 있습니까? –

+1

혹시 NFS 같은 원격 파일 시스템에 파일이 있습니까? – amcnabb

+0

사용자가 실제로 자신의 문제를 해결하고 해답을 삭제 된 답변에 대한 의견으로 게시했습니다. 닫히지 않은 파일 때문에 발생했기 때문에 디스크로 플러시되지 않았습니다. – agf

답변

0

아마도 os 모듈 대신에 서브 프로세스 모듈을 사용하기 위해 약간 재 작성했을 것입니다.

그럼 난 아마 시스템 호출 추적 연구를 통해 잘못된 무슨 일이 일어나고 있는지 자세히 조사 할 것 : http://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html

희망 어떤 오류를 말해주지 파일의 끝 부분에 "E"오류 코드가있을거야 마주 친다.

또 다른 옵션은 하위 프로세스의 하위 집합을 주석 처리하는 것입니다 (n + 1 번째가 n 번째 출력에 크게 의존하지 않는다고 가정). 문제가있는 핀을 고정하십시오. 그 후, 문제가되는 스크립트에 추가 오류보고를 뿌려서 자신이하는 일을 볼 수 있습니다.

그러나 C-ish 시스템 콜 추적으로 미루지 않았다면 더 쉬울 수도 있습니다.

+0

사용자가 실제로 자신의 문제를 해결하고 해답을 삭제 된 답변에 대한 의견으로 게시했습니다. 닫히지 않은 파일 때문에 발생했기 때문에 디스크로 플러시되지 않았습니다. – agf

관련 문제