subprocess 모듈의 기본 클래스는 이름이 Popen이며 하위 프로세스를 나타냅니다. Popen 누군가가 실제로 어떤 객체인지 나타내는 이름을 선택하는 대신 이름을 일부 함수 이름 지정 형식을 따르도록 강요하는 것처럼 들립니다. 왜 누군가가 왜 단순한 무언가, 예를 들어 Subprocess과 같이 선택되었다는 것을 알고 있습니까?
우리 소프트웨어를 패키지로하는 python 스크립트를 작성하려고합니다. 이 스크립트는 우리 제품을 빌드하고 패키징해야합니다. 현재 우리는 csh 및 perl 스크립트를 포함하는 각 스크립트를 개별적으로 수행하는 다른 스크립트를 가지고 있습니다. 그러한 스크립트 중 하나는 다음과 같이 실행됩니다. sudo mod args
여기서 mod는 perl 스크립트
msi 설치 프로그램을 자동 모드로 실행하고 특정 파일에 로그를 캐싱 중입니다. 다음 명령을 실행해야합니다. C:\Program Files\ My Installer\Setup.exe /s /v "/qn /lv %TEMP%\log_silent.log" 내가 사용 : subprocess.Popen(['C:\Program Files\ My Installer\Se
을 실행하는 동안 서브 프로세스의 표준 출력을 가로 채기 : import time, sys
for i in range(200):
sys.stdout.write('reading %i\n'%i)
time.sleep(.02)
그리고 이것은 제어 및 서브 프로세스의 출력을 수정하는 스크립트입니다 : import subprocess, time
다음과 같이 Java에서 하위 프로세스를 시작합니다. final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
이제 백그라운드에서 실행됩니다. 모두 좋고 좋은. 내 프로그램이 지금 중단되면 (은 여전히 dev :-) 임) 자식 프로세스가
현재 파이썬 스크립트와 관련된 주요 문제가 있습니다. 스크립트는 잘못된 오류보고를 올바른 오류보고로 변환하기 위해 처리기를 통해 임의의 명령을 실행합니다. 문제는 필자의 경로에 앰퍼샌드가 포함 된 명령으로 창에서 스크립트가 올바르게 작동하도록하는 것입니다. ^를 사용하여 앰퍼샌드를 이스케이프 처리하고 명령을 인용하려고 시도했지만 어느 것도 작동하지 않습니다
그래서 서브 프로세스를 사용하여 파이썬 스크립트 내에서 수퍼 유저로 프로세스를 실행하려고합니다. proc = subprocess.Popen('sudo apach2ctl restart',
shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=