我希望能够使用系统蜂鸣器(如果蜂鸣器不可用/不可访问则仅使用扬声器)生成特定频率和长度(用于不同的声音信号)的哔声声音。我知道可以使用ioctl来实现这一点,但那需要root权限,而我不想要。
我知道可以使用"beep"命令来实现,但这会引入外部依赖项,如果可能的话应该避免使用(完全没有外部依赖项,只使用基本的Linux库和C语言)。
目前我有以下代码(但这需要超级用户权限才能运行):
#include <stdlib.h>
#include <fcntl.h>
#include <linux/kd.h>
int main(int argc, char *argv[])
{
int fd = open("/dev/console", O_RDONLY);
if (fd == -1 || argc != 3) return -1;
return ioctl(fd, KDMKTONE, (atoi(argv[2])<<16)+(1193180/atoi(argv[1])));
}
如果没有其他方法,我会使用蜂鸣声,但我真的想避免依赖并将蜂鸣直接集成到我的脚本中,但我相信这里会有人知道解决方案/变通方法。我不太想要外部库,因为程序应尽可能轻量化。