IT

subprocess.Popen과 os.system의 차이점

lottoking 2020. 8. 25. 08:21
반응형

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

반응형