2012-05-17 2 views
0

[3, SC_OPEN_MAX]에 루프를 만들어 열려있는 모든 파일 핸들을 닫으려고하는 python popen2에 패치를 적용하고 싶습니다.닫으려면 열려있는 모든 파일 처리기를 검색하는 방법?

누군가가 ulimit을 사용하여 상한값을 1,000,000과 같은 큰 값으로 늘리면 popen을 사용하여 차단하는 모든 파이썬 응용 프로그램을 만듭니다.

질문의 요점은 : 프로세스의 열린 파일 핸들러 목록을 얻는 방법입니다. 이 솔루션은 적어도 Linux와 Windows에서 작동해야합니다.

참고 :이 재 고정 창에 작동하지 않을 것입니다 http://bugs.python.org/issue1663329

답변

1

귀하의 접근을 위해입니다. 실제로 창문에는 열거 할 수있는 파일 핸들조차 없습니다. for 루프 접근법은 종종 Unix select-poll 루프에서 사용되었지만 소켓 핸들이 종종 0x80000000 이상 이었기 때문에 Windows에서 비참하게 실패합니다.

또한 정확하게 기억한다면 filehandles은 리눅스에서 exec 호출에 의해 기본적으로 닫히고, 나는 비슷한 것이 윈도우에서 일어날 것이라고 생각한다. exec를 통해 열려있는 핸들을 얻으려면 명시 적으로 요청해야합니다.

UPDATE :

http://bugs.python.org/issue1663329

은 또한 단지 지금은 당신이 popen2에 말하고 것으로 나타났습니다 관심이있을 수 있습니다 - 파이썬은 충분히 새로운 경우 당신은 정말 대신

subprocess를 사용한다고
관련 문제