하위 프로세스 간의 차이입니다.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()
다른 건 필요 없습니다. subprocess.Popen()
다른 여러 도구를 대체합니다(os.system()
는 다른 세 개의 Python 모듈에 흩어져 있던 것들 중 하나일 뿐입니다.
도움이 된다면, 생각해 보세요.subprocess.Popen()
매우 유연한.os.system()
.
subprocess.Popen()
의 엄격한 수퍼 세트입니다.os.system()
.
os.system
Unix 명령어와 동일하지만subprocess
많은 시설을 제공하기 위해 만들어진 도우미 모듈입니다.Popen
보다 쉽고 제어 가능한 인터페이스를 갖춘 명령어입니다.이러한 명령어는 Unix Popen 명령어와 유사하게 설계되었습니다.
system()
를 호출하여 명령에 지정된 명령을 실행합니다./bin/sh -c command
명령이 완료된 후 반환됩니다.
반면에:
그
popen()
함수는 파이프를 만들고, 포킹하고, 셸을 호출하여 프로세스를 엽니다.
어떤 것을 사용할지 생각 중인 경우에는 실행을 위한 모든 기능과 프로세스에 대한 추가 제어 기능이 있으므로 반드시 사용하십시오.
하위 프로세스는 popen2를 기반으로 하므로 여러 가지 장점이 있습니다. 여기 PEP에는 전체 목록이 있지만 일부는 다음과 같습니다.
- 셸에서 파이프 사용
- 더 나은 신규 라인 지원
- 예외의 더 나은 처리
윈도우에서 파이썬(cpython)을 실행할 때<built-in function system>
os.system은 커튼 아래에서 실행되는 반면 Windows가 아닌 os를 사용하는 경우 시스템을 사용합니다.
반대로 Popen은 창 및 _posix 하위 프로세스에서 CreateProcess를 사용해야 합니다.posix 기반 운영 체제에서 fork_exec.
즉, os.system 문서에서 다음과 같은 중요한 조언이 제공됩니다.
하위 프로세스 모듈은 새로운 프로세스를 생성하고 결과를 검색할 수 있는 보다 강력한 기능을 제공합니다. 이 기능을 사용하는 것보다 해당 모듈을 사용하는 것이 더 좋습니다.유용한 레시피는 하위 프로세스 설명서의 하위 프로세스 모듈로 이전 기능 바꾸기 섹션을 참조하십시오.
언급URL : https://stackoverflow.com/questions/4813238/difference-between-subprocess-popen-and-os-system
'programing' 카테고리의 다른 글
페이지 새로 고침 시 Quasar 탭 패널의 현재 탭을 유지하는 방법 (0) | 2023.06.23 |
---|---|
Firebase App '[DEFAULT]'이 생성되지 않았습니다. Firebase를 호출합니다.Float 및 Firebase에서 App() 초기화 (0) | 2023.06.23 |
SQL Server 쿼리에서 주말을 제외하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
Vue, fetch에서 빈 배열을 반환합니다. (0) | 2023.06.23 |
org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:unknown (0) | 2023.06.23 |