Linux
snd_rawmidi_open() 永遠等待 - 沒有錯誤消息
我正在嘗試在 C 中將 ALSA 用於 MIDI 目的。
我的問題是,當使用有價值的參數時, 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”並暫停。
任何的想法?
非常感謝!
預設情況下,
snd_rawmidi_open
等待直到請求的埠可用。如果您不希望這樣做,請添加標誌(如果您希望讀/寫呼叫被阻塞
SND_RAWMIDI_NONBLOCK
,則隨後將其重置)。snd_rawmidi_nonblock()