Qt에서 QProcess로 시작한 하위 프로세스를 일시 중단하고 다시 시작할 수 있습니까?Qt에서 QProcess로 시작된 하위 프로세스 일시 중지 및 다시 시작
나는 QProcess를 사용하여 서브 프로세스로 eSpeak를 (텍스트 음성 합성기를) 시작 (그리고 나는 그것의 표준 입력을 통해 그것을 텍스트를 공급) :
espeak = new QProcess(this);
espeak->start("espeak");
espeak->write(text.toUtf8());
그것이 내가이없는 하위 프로세스이기 때문에 전반적으로 제어 할 수는 있지만, 일시 중지하고 하위 프로세스를 다시 시작하여 구현하려는 연설을 일시 중지했다가 다시 시작하는 옵션을 추가하려고합니다.
QProcess에서 함수를 찾을 수 없으므로 플랫폼 별 방법을 사용해야합니다. 저는 리눅스를 사용하고 있습니다. 따라서 SIGSTOP 및 SIGCONT, as suggested by this thread 신호를 보내 드리겠습니다. 그러나 프로세스 처리/pid가 필요합니다.
espeak 프로세스를 중지하면 스피커에서 나오는 소리가 즉시 중단되는 경우 일 수도, 중지되지 않을 수도 있습니다. –
나는 그것을 내 컴퓨터 (Ubuntu Linux)에서 테스트했고 사운드는 즉시 멈췄다. 왜 즉시 멈추지 않을까요? – sashoalm
espeak의 구현 방법에 따라 다릅니다. 한 번에 많은 양의 텍스트를 합성하여 기본 하드웨어 (또는 사운드 데몬과 같은 다른 프로세스)로 보내면 프로세스를 중지해도 이미 보낸 청크에 영향을 미치지 않으며 끝까지 재생됩니다 . –