저는 라스베리 파이에 레코딩하기 위해 서브 프로세스를 통해 arecord를 사용하고 있습니다 : 레코딩을 시작하려면 조이스틱 버튼을 누르고 레코딩을 중지하려면 버튼을 다시 누르십시오. p.terminate()를 사용하여 레코딩을 중지합니다. 여기에 제 코드가 있습니다. 하위 프로세스를 종결하는 것이 올바른지 나는 모르겠다.하위 프로세스를 종료하는 올바른 방법입니까?
미리 감사드립니다. 일반적인 의미로 말하면
if joystick.get_numbuttons() >= 1 and joystick.get_button(0) == 0 and button_pressed:
button_pressed = False
is_recording = not is_recording
print(is_recording)
#start recording
if is_recording:
dotting = dotting + 1
#recording code
datetime.now().strftime("%Y%m%d_%H%M%S")
filename = "%s.wav" % datetime.now().strftime("%Y%m%d_%H%M%S")
p=subprocess.Popen(['arecord', '--device=hw:1,0', '--format', 'S16_LE', '--rate', '44100-c1', filename], shell=False)
#change background
background = pygame.image.load(background_image2).convert()
#start timer
stopFlag = Event()
timer = MyTimer(stopFlag,time.clock())
#timer.start()
text2 = font.render('.', True, BLACK)
screen.blit(background, (0,0))
stopFlag.set()
#record, remaining here
#stop recording
else:
#stop recording, save record
timer.do_run = False
backToPreviousQuestion()
background = pygame.image.load(background_image).convert()
p.terminate()
pygame.display.update()는
'Popen.terminate()'*는 일반적으로 올바른 것입니다. 그런데 작업 코드에 대한 피드백을 요청하려면 (단일 문제를 격리하는 [mcve]에 내장 된 코드로 특정 문제에 대한 질문과 반대) StackOverflow 대신 [codereview.se]를 고려하십시오. 게시하기 전에 도움말 센터가 있음). –
감사합니다, 나는 프로그래밍의 멍청한 놈입니다. 나는 코드 리뷰로 물어볼 것이다. –