snd_rawmidi_open()은 영원히 기다립니다 - 오류 메시지 없음

snd_rawmidi_open()은 영원히 기다립니다 - 오류 메시지 없음

MIDI 목적으로 C에서 ALSA를 사용하려고 합니다.

내 문제는 귀중한 인수를 사용할 때 snd_rawmidi_open() 종류의 "충돌"(while 루프처럼 영원히 대기)이라는 것입니다.

#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>

int main(int argc,char** argv)
{
    snd_rawmidi_t *handle_in = 0;
    int err;
    fprintf(stderr, "TEST 1\n");
    err = snd_rawmidi_open(&handle_in,NULL,"hw:1,0,0",0);
    fprintf(stderr,"TEST 2\n");
    if (err) {
        fprintf(stderr,"snd_rawmidi_open failed: %d\n",err);
    }
    fprintf(stderr, "TEST 3\n");
    exit(0);    
}

"hw:1,0,0"은 MIDI 키보드입니다. "foo"와 같은 잘못된 값을 사용하면 오류가 발생합니다. 유효한 경우 프로그램은 "TEST 1"을 표시하고 일시 중지됩니다.

어떤 아이디어가 있나요?

매우 감사합니다!

답변1

기본적으로 snd_rawmidi_open요청을 기다리는 포트는 사용 가능합니다.

이를 원하지 않으면 이 플래그를 추가하십시오( SND_RAWMIDI_NONBLOCK읽기/쓰기 호출을 방지하려면 재설정하십시오).snd_rawmidi_nonblock()

관련 정보