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()