snd_rawmidi_open() 永远等待 - 没有错误消息

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”并暂停。

任何想法?

非常感谢!

答案1

默认情况下,snd_rawmidi_open等待请求的端口可用。

如果您不希望这样做,请添加该标志(如果您希望阻止读/写调用,SND_RAWMIDI_NONBLOCK则随后将其重置)。snd_rawmidi_nonblock()

相关内容