python popen 예제

파이썬은 다른 모듈과 라이브러리와 많은 기능을 제공합니다. 파이썬 응용 프로그램 내에서 새 프로세스를 열어야 할 때 하위 프로세스 라이브러리 및 관련 함수를 사용할 수 있습니다. 추측할 수 있듯이 os.popen4 메서드는 이전 메서드와 유사합니다. 그러나 이 경우 stdin에 대해 하나, stdout 및 stderr에 대해 다른 파일두 개만 반환합니다. universal_newlines가 True이면 파일 개체 stdout 및 stderr가 범용 줄 바꿈 모드에서 텍스트 파일로 열립니다. 줄은 `n`, 유닉스 줄 끝 규칙, `r`, 이전 매킨토시 규칙 또는 `rn`, Windows 규칙 중 어느 것으로도 종료될 수 있습니다. 이러한 모든 외부 표현은 파이썬 프로그램에서 `n`으로 볼 수 있습니다. 메서드 asyncio.create_subprocess_exec()은 Popen()과 거의 동일한 방식으로 작동하지만 반환된 개체에서 wait() 및 통신()을 호출해도 프로세서가 차단되지 않으므로 외부 하위 프로세스가 작동하지 않는 동안 파이썬 인터프리터를 다른 작업에서 사용할 수 있습니다. 반환. 셸=True가 있는 유닉스에서는 쉘이 기본값으로 /bin/sh로 설정됩니다. args가 문자열인 경우 문자열은 셸을 통해 실행할 명령을 지정합니다. 즉, 셸 프롬프트에 입력할 때와 똑같이 문자열의 서식이 지정되어야 합니다.

예를 들어, 인용 또는 백슬래시에 공백이 있는 파일 이름을 이스케이프합니다. args가 시퀀스인 경우 첫 번째 항목은 명령 문자열을 지정하고 추가 항목은 셸 자체에 대한 추가 인수로 처리됩니다. 즉, Popen은 다음과 같습니다: 이 예제에서는 명령줄 cat index.rst | grep “.. 포함” | 이 섹션의 reStructuredText 소스 파일을 읽고 다른 파일을 포함하는 모든 줄을 찾은 다음 파일 이름만 인쇄하는 -f 3 -d:를 잘라냅니다. 여기서 명령 매개 변수는 실행될 것이며 해당 출력은 열린 파일을 통해 사용할 수 있습니다. 인수 모드는 이 출력 파일이 읽을 수 있는지(`r`) 또는 쓰기 가능(`w`)인지를 정의합니다. 모드에 `b`를 적용하면 바이너리 모드에서 파일이 열립니다. 따라서, 예를 들어 “rb”는 읽을 수 있는 바이너리 파일 객체를 생성한다. popen2 함수에 대한 cmd 인수가 문자열인 경우 명령은 /bin/sh를 통해 실행됩니다. 목록인 경우 명령이 직접 실행됩니다. 다른 popen 함수와 달리 이 구현은 시스템 셸을 암시적으로 호출하지 않습니다.

즉, 쉘 메타문자를 포함한 모든 문자를 자식 프로세스에 안전하게 전달할 수 있습니다. 셸이 명시적으로 호출되는 경우 모든 공백 및 메타 문자가 적절하게 인용되도록 하는 것은 응용 프로그램의 책임입니다. 지정된 명령 또는 이진을 실행한 후 일부 출력이 생성될 수 있습니다. 기본적으로 이 출력은 예제의 파이썬 셸인 stdout에 인쇄됩니다. 아래와 같이 check_output 명령을 호출하여 프로세스 출력을 파이썬 변수에 저장할 수 있습니다. 이 예제에서는 저장 합니다. os 예제에는 os.fork() 및 os.kill()을 사용하는 프로세스 간의 시그널링 데모가 포함됩니다. 각 Popen 인스턴스는 자식 프로세스의 프로세스 ID와 함께 pid 특성을 제공하기 때문에 하위 프로세스와 유사한 작업을 수행할 수 있습니다. 예를 들어, 이 스크립트를 사용하여 부모 프로세스에 의해 실행되기를 바라며 이 문서가 끝날 때까지 Python 코드에서 외부 명령을 호출하는 방법과 이를 수행하는 데 사용해야 하는 방법을 더 잘 이해할 수 있습니다.