subprocess.Popen과 os.system의 차이점
subprocess.Popen()
과 의 차이점은 os.system()
무엇입니까?
Python 문서 의 하위 프로세스 섹션 을 확인하면 다음으로 대체하는 방법에 대한 예제가 있음을 알 수 os.system()
있습니다 subprocess.Popen()
.
sts = os.system("mycmd" + " myarg")
... 같은 일을 ...
sts = Popen("mycmd" + " myarg", shell=True).wait()
"개선 된"는 더 복잡해 코드 보이지만 일단 알게 subprocess.Popen()
되면 다른 것이 필요하지 않기 때문에 더 좋습니다 . 세 개의 다른 Python 모듈에 흩어져 여러 subprocess.Popen()
다른 도구 ( os.system()
그 중 하나 일뿐)를 대체 합니다.
이된다면 도움 subprocess.Popen()
매우 유연한 것으로 생각하십시오 os.system()
.
subprocess.Popen()
의 엄격한 수퍼 세트입니다 os.system()
.
os.system은 Unix 시스템 명령 과 동일 하지만 하위 프로세스는 Popen 명령이 제공하는 많은 기능을 더 제부 제어 가능한 인터페이스로하기 위해 만들어진 모듈 도우미입니다. 그것들은 유닉스는 popen 명령 과 유사하게 설계되었습니다 .
system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed
어디로
The popen() function opens a process by creating a pipe, forking, and invoking the shell.
어떤 것을 사용할 수 있는지 생각하고 권한이있는 실행 을위한 모든 기능과 프로세스에 대한 추가 제어가 있기 때문에 확실히 하위 프로세스 를 사용 합니다.
여러 가지 장점 이 있습니다. 여기 에 PEP에 전체 목록이 있습니다.
- 쉘에서 파이프 사용
- 더 나은 개행 지원
- 더 나은 예외 처리
윈도우에서 파이썬 (CPython과)을 실행할 때 <built-in function system>
os.system을 은 _wsystem 커튼 아래에서 실행되고 윈도우가 아닌 OS를 사용하는 경우 시스템을 사용 합니다 .
반대로 는 popen 은 윈도우 에서는 CreateProcess를 를 사용 하고 POSIX 기반 운영 체제에서는 _posixsubprocess.fork_exec 를 사용해야 합니다.
즉, 중요한 조언은 os.system 문서 에서 나옵니다 .
하위 프로세스 모듈은 새 프로세스를 생성하고 결과를 검색하기위한 강력한 하위 기능을 제공합니다. 이 기능을 사용하는 것보다 해당 모듈을 사용하는 것이 좋습니다. 유용한 레시피는 하위 프로세스 문서의 하위 프로세스 모듈로 이전 함수 섹션을 참조하세요.
참고 URL : https://stackoverflow.com/questions/4813238/difference-between-subprocess-popen-and-os-system
'IT' 카테고리의 다른 글
jQuery ajax 호출에 여러 매개 변수 전달 (0) | 2020.08.25 |
---|---|
iPhone에 호스트 파일이 있습니까? (0) | 2020.08.25 |
START_OBJECT 토큰에서 java.util.ArrayList의 인스턴스를 역화 할 수 없습니다. (0) | 2020.08.25 |
콜 스택은 정확히 어떻게 작동합니까? (0) | 2020.08.25 |
주어진 위도 / 경도 위치에 대한 경계 상자를 계산하는 방법은 무엇입니까? (0) | 2020.08.25 |