我想使用系统蜂鸣器(并且只有扬声器,如果蜂鸣器不可用/可访问),生成具有特定频率和长度(针对不同声音信号)的蜂鸣声。我知道可以通过使用ioctl来完成此操作,但这需要root访问权限,我不想这样做。在Linux中发出哔哔声C

我知道我可以使用“beep”命令,但那会是一个依赖项,如果可能的话,不应该使用它(根本不需要外部依赖项,只有基本的linux库和C)。

我现在拥有的是下面的代码(但是这需要超级用户权限来运行):

#include

#include

#include

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])));

}

如果没有其他办法可以做到这一点,那么我会用嘟嘟声,但我真的想以避免依赖并将哔声直接集成到我的脚本中,但我相信这里有人会知道解决方案/解决方法。

我并不想要外部库,因为程序应尽可能轻量级。

2012-04-09

omnidan

+0

如果在桌面下运行,则可以使用ALSA。你也可以使用'play'命令......而一些桌面上有通知... –

2012-04-09 12:04:27

+0

@BasileStarynkevitch这不是过于复杂的事情吗?我只想要一个具有特定频率和长度的简单蜂鸣声。正如我已经告诉巴勃罗,我想尽可能保持轻量级,但是我想用嘟嘟声或suid来获得root权限是一种方法,那么呢? –

2012-04-09 12:09:18

+0

看看[这](http://stackoverflow.com/questions/412789/windows-beep-equivalent-for-linux)可以帮助你。 @paxdiablo声称它也可以从用户帐户运行。 –

2012-04-09 12:14:25

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐