关闭Linux蜂鸣器

在linux(CentOS)中,我们常用Tab键进行命令补全或者esc按键,但是系统总是提示滴滴声,让人很烦躁。 即使把音频设备关掉,或者虚拟机的音频设备也关掉,还是有这个声音。

网上相关的方法很多,我主要尝试了两种方法

  1. 用vi 编辑 /etc/inputrc 文件,找到“#set bell-style none”,取消注释

但是此文件是只读文件,修改需要root权限,在我当前的办公环境下无法完成修改

此方法到此没在进行尝试

  1. 在~/.bashrc或者~/.cshrc(这取决于你的linux采用的是什么shell)

添加

setterm -blength 0

xset -b

网上有的方法是只添加第一行,我个人添加两行后解决了这个问题

需要注意的是添加完成后需要source或者新建一个tab

在C++中调用Linux系统的蜂鸣器,实际上就是通过控制硬件设备来触发声音信号。Linux系统中的蜂鸣器通常是通过ALSA(Advanced Linux Sound Architecture)来操作,就像前面提到的那样,我们可以使用`alsa`库来实现这个功能。下面是一个简单的例子,展示了如何通过C++代码来模拟Linux蜂鸣器的声音: ```cpp #include <alsa/asoundlib.h> #include <unistd.h> // 对于usleep() int main() { // 初始化ALSA asoundlib_init(); // 获取默认音频设备 char device_name[] = "hw:0,0"; // 可能需要根据实际情况调整 snd_pcm_t *pcm; int err = snd_pcm_open(&pcm, device_name, SND_PCM_STREAM_OUTPUT, 0); if (err < 0) { perror("Failed to open PCM device"); return -1; } // 设置缓冲区大小,通常选择较小值以快速响铃 unsigned int period_size = 1024; // 单位字节 unsigned int periods = 1; err = snd_pcm_hw_params_set_period_time(pcm, &periods, &period_size); if (err < 0) { perror("Failed to set parameters"); goto close_pcm; } // 向PCM发送一个单周期,模拟蜂鸣器声音 char data[period_size]; memset(data, 0, period_size); // 设置为静默 data[0] = 1; // 仅设置第一个样本为非零,形成正向峰 err = snd_pcm_writei(pcm, data, period_size); if (err < 0) { perror("Failed to write to PCM"); goto close_pcm; } // 暂停一段时间让声音响起,然后停止 usleep(500000); // 例如500ms err = snd_pcm_stop(pcm); if (err < 0) { perror("Failed to stop PCM"); goto close_pcm; } close_pcm: // 关闭PCM设备 if (pcm) { snd_pcm_close(pcm); } // 清理ALSA asoundlib_exit(); return 0; } ``` 请注意,以上代码片段可能会因Linux版本、硬件配置ALSA设置的不同而有所差异。如果在某些环境下运行遇到问题,可能需要进一步调试或查阅文档来适应具体的环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值