■ Popen 클래스의 stdin 변수와 communicate 메소드를 사용해 자식 프로세스의 실행 결과를 구하는 방법을 보여준다.
▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import os import subprocess def runOpenSSL(sourceBytes): environmentDictionary = os.environ.copy() environmentDictionary["OPENSSL_PASSWORD"] = b"\xe24U\n\xd0Ql3S\x11" popen = subprocess.Popen( ["openssl", "enc", "-pbkdf2", "-pass", "env:OPENSSL_PASSWORD"], env = environmentDictionary, stdin = subprocess.PIPE, stdout = subprocess.PIPE ) popen.stdin.write(sourceBytes) popen.stdin.flush() # 자식 프로세스가 입력을 반드시 받도록 만든다. return popen popenList = [] for _ in range(3): randomBytes = os.urandom(10) popen = runOpenSSL(randomBytes) popenList.append(popen) for popen in popenList: outputBytes, errorBytes = popen.communicate() print(outputBytes[-10:]) """ b'\xf1\x88n=\xedi[\xeb\xa3p' b'RI\x95\x1b\xe5_\xdc$\xa3<' b'\xcd4RQ\x89@`\x98\xa8\x95' """ |