Linux

snd_rawmidi_open() 永遠等待 - 沒有錯誤消息

  • September 12, 2014

我正在嘗試在 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()

引用自:https://unix.stackexchange.com/questions/155252