[파이썬] subprocess `Popen.communicate()`: 프로세스와 통신

프로세스와 상호 작용하는 프로그램을 개발할 때, 파이썬의 subprocess 모듈은 매우 유용한 도구입니다. 여러 가지 작업을 수행하기 위해 외부 프로세스를 호출하고, 입력과 출력을 관리하며, 결과를 받아올 수 있습니다. 이러한 프로세스와의 통신을 효과적으로 수행하기 위해 subprocess.Popen 클래스의 communicate() 메서드가 제공됩니다.

communicate() 메서드를 사용하여 프로세스와의 상호 작용을 처리할 수 있습니다. 이 메서드는 프로세스에 데이터를 전달하고, 프로세스의 결과를 가져올 때 사용됩니다. 이 메서드를 사용하면 비동기적으로 프로세스와 통신할 수 있으며, 프로세스의 상태를 감시하고 결과를 처리하는 작업을 대신 처리해 줍니다.

다음은 communicate() 메서드의 예제 코드입니다. 여기에서는 외부 프로세스로 “ls” 명령어를 호출하고, 결과를 받아와서 출력합니다.

import subprocess

# 외부 프로세스 실행
process = subprocess.Popen(['ls'], stdout=subprocess.PIPE)

# 프로세스가 종료되고 결과를 가져옴
output, error = process.communicate()

# 결과 출력
print(output.decode())

위의 코드에서 communicate() 메서드는 외부 프로세스가 완료될 때까지 기다렸다가 결과를 받아옵니다. 이 때, stdout=subprocess.PIPE를 통해 프로세스의 출력을 파이프에 연결하여 가져올 수 있습니다. communicate() 메서드는 프로세스의 결과와 오류를 반환하며, 반환된 결과는 원하는 방식으로 처리할 수 있습니다.

communicate() 메서드는 프로세스와의 상호 작용뿐만 아니라, 프로세스 종료를 기다리는 등의 여러 가지 작업을 도와주는 유용한 메서드입니다. 이를 통해 파이썬 프로그램에서 외부 프로세스와 효과적으로 통신할 수 있습니다.