python
  • bash
  • shell
  • subprocess
  • exec
  • 2016-12-27 1 views 0 likes 
    0

    파이썬 스크립트에서 bash 스크립트 while :; do afplay beep.wav ; done 명령을 실행하려고했지만 이후에 그것을 죽일 수 있습니다. this answer파이썬은 서브 프로세스에서 루프가 시작되는 동안 bash를 종료합니다.

    process = subprocess.Popen("exec while :; do afplay %s ; done" % fileName, shell=True, executable='/bin/bash') 
    

    알 수 있지만, 위의 나를 위해 작동하지 않습니다

    나는 시도했다. (스크립트가 실행되지 않습니다.)

    while :; do afplay beep.wav ; done을 파이썬에서 실행하고 시작한 후에 언제 어떻게 죽일 수 있습니까?


    편집 : 그냥 exec >(while :; do afplay %s; done) 스크립트를 실행합니다,하지만 지금 process.kill() 그것을 죽이지 않습니다 것으로 나타났습니다.

    +2

    'exec'가 내장되어 있기 때문에'man exec' 대신'help exec'을 입력하십시오. 그렇다면'exec'이 _commands를 실행한다는 것을 보게 될 것입니다. _ 조금 생각하면'exec'가 아닌 외부 명령';)'을 이해할 수 있습니다. 너 뭐하려고? –

    +0

    @gniourf_gniourf'while :;을 실행하려고합니다. 경고음을 울리십시오 .wav; done '명령을 파이썬 스크립트에서 가져 왔지만 이후에는 그것을 죽일 수 있어야합니다. [이 답변] (http://stackoverflow.com/a/13143013/3310334)는 파이썬에서 bash 스크립트를 죽일 수있는 쉬운 방법을 보여 주며 복사하려고했지만 작동하지 않았습니다. – theonlygusti

    +0

    다음 질문에이 모든 것을 분명히하십시오! 무겁게 질문을 수정해야합니다! –

    답변

    0
    os.killpg(os.getpgid(process.pid), signal.SIGINT) 
    

    이것은 트릭을 수행하는 것처럼 보였습니다. 유일한 프로세스 대신 프로세스 그룹 (os.killpg)을 죽이고 있습니다.

    관련 문제