Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenBSD下用C获取音频信息_C_Audio_Openbsd - Fatal编程技术网

在OpenBSD下用C获取音频信息

在OpenBSD下用C获取音频信息,c,audio,openbsd,C,Audio,Openbsd,我正在尝试获取OpenBSD中C程序的音量等音频信息。通过shell,命令将是 mixerctl outputs.master 但是我怎样才能在C中得到它呢?到目前为止,我只在音频(4)手册页中找到了类似的内容,但我无法实现这一点(我不擅长C): GCC有一个-Wall开关,用于在您的代码尝试执行此类操作时发出警告(其他编译器可能也会这样做)。我总是在编译代码时使用它来避免愚蠢的错误。使用它编译原始代码时会给出如下警告:audio.c:12:8:警告:从“FILE*”(也称为“struct”u

我正在尝试获取OpenBSD中C程序的音量等音频信息。通过shell,命令将是

mixerctl outputs.master
但是我怎样才能在C中得到它呢?到目前为止,我只在
音频(4)
手册页中找到了类似的内容,但我无法实现这一点(我不擅长C):


GCC有一个
-Wall
开关,用于在您的代码尝试执行此类操作时发出警告(其他编译器可能也会这样做)。我总是在编译代码时使用它来避免愚蠢的错误。使用它编译原始代码时会给出如下警告:
audio.c:12:8:警告:从“FILE*”(也称为“struct”u sFILE*)分配给“int”的整数转换指针不兼容。
mixerctl
audioctl
最初是用c编写的,如果您有openbsd基本源代码,则每个指针仅约400行(我推荐),您可以在
/usr/src/usr.bin/
中找到它们,是的,谢谢。由于
音频(4)
中的更改破坏了此解决方案,请查看
mixerctl
如何帮助修复/重写。
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/audioio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    audio_info_t *info;
    int fd;

    fd = fopen("/dev/audioctl", "r");
    if (ioctl(fd, AUDIO_GETINFO, &info) < 0)
        fprintf(stderr, "%s\n", strerror(errno));
    ...
}
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/audioio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    audio_info_t info;
    FILE *fd;

    fd = fopen("/dev/audioctl", "r");
    if (ioctl(fileno(fd), AUDIO_GETINFO, &info) < 0)
        fprintf(stderr, "%s\n", strerror(errno));

    printf("%d", info.play.gain);
    fclose(fd);
}