C 以编程方式在Linux上查找可用声卡

C 以编程方式在Linux上查找可用声卡,c,linux,alsa,C,Linux,Alsa,有没有办法使用asoundlib和C以编程方式获取系统上可用声卡的列表?我希望它具有与/proc/asound/cards相同的信息。您可以使用snd\u card\u next对这些卡进行迭代,从-1开始获得第0张卡 下面是示例代码;用gcc-o countcards countcards.c-lasound编译它: #include <alsa/asoundlib.h> #include <stdio.h> int main() { int totalCar

有没有办法使用asoundlib和C以编程方式获取系统上可用声卡的列表?我希望它具有与
/proc/asound/cards
相同的信息。您可以使用
snd\u card\u next
对这些卡进行迭代,从-1开始获得第0张卡

下面是示例代码;用gcc-o countcards countcards.c-lasound编译它:

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

int main()
{
    int totalCards = 0;   // No cards found yet
    int cardNum = -1;     // Start with first card
    int err;

    for (;;) {
        // Get next sound card's card number.
        if ((err = snd_card_next(&cardNum)) < 0) {
            fprintf(stderr, "Can't get the next card number: %s\n",
                            snd_strerror(err));
            break;
        }

        if (cardNum < 0)
            // No more cards
            break;

        ++totalCards;   // Another card found, so bump the count
    }

    printf("ALSA found %i card(s)\n", totalCards);

    // ALSA allocates some memory to load its config file when we call
    // snd_card_next. Now that we're done getting the info, tell ALSA
    // to unload the info and release the memory.
    snd_config_update_free_global();
}
#include(这也会打开每张卡以读取其名称)