2017-01-17 13 views
1

호출자가 fd 0,1,2 (stdin, out, err) 및 fd = 3 ("a.txt"파일) 및 하위 프로세스를 여는 경우 하위 프로세스를 작성하면 호출자의 fd를 닫아야합니다.왜 python subprocess.Popen에 close_fd 매개 변수가 필요합니까?

p=subprocess.Popen(cmd,shell=True,close_fds=True,stdout=None... 

같은 "진정한 close_fd ="는 popen 세트, 그것은 뜻 :

(1) 0-3가 서브 프로세스에 폐쇄 FD?

(2) 스크린 인쇄 라인 구성 프로세스 또는 발신과 입력/출력 통신을 수 있는지, 폐쇄하는 경우가 fd 0-3 : 조금 혼란

p.communicate() 

. 설명?

답변

2

3 만 닫힙니다. Popen docs에서 : close_fds가 true의 경우

, 0, 1, 2를 제외한 모든 파일 기술자는 자식 프로세스가 실행되기 전에 가 종료됩니다. (POSIX에만 해당).