【问题标题】:Playing beep in C++ (Linux) [duplicate]在C ++(Linux)中播放哔哔声[重复]
【发布时间】:2012-10-06 19:53:56
【问题描述】:

可能重复:
Beep on Linux in C

我一直在寻找一种在 Linux 中播放简单哔声的方法,但我发现的所有方法都不起作用。

我试过 \a, \b \7 但有人会发出哔哔声。

我想在不使用声音库的情况下播放它,稍后我将使用任何库将哔声更改为真实的声音,但现在我只想播放哔声用于测试目的

正如我所说,我使用的是 Linux(完全是 LMDE),因此无法使用最简单的 Windows 方法(包括 windows.h 和 Beep())。

那么我该如何实现呢?系统调用或类似的东西。

编辑:我结束了在 Java 中的操作,并且已经可以使用它了。

【问题讨论】:

  • 您确定您的哔声在您使用的控制台中有效吗?现在它通常会闪烁控制台窗口,或者 - 更好的是 - 什么都不做。
  • 既然你这么说了,我只是启用了警报声音并尝试了例如退格键,没有任何内容可删除,它也没有播放哔声。
  • toot 是一个跨平台的 C 文件,它尝试调用多个声音发生器来产生哔声。 github.com/vareille/toot

标签: c++ beep


【解决方案1】:

你试过echo -e "\a"吗?
你也可以试试:echo -ne '\007'

还有一个beep 命令行工具,您应该能够使用您的分发包管理系统进行安装。

它应该会导致终端发出哔哔声。
我已经在几个 Linux 发行版上对其进行了测试,并且似乎可以正常工作。

【讨论】:

  • 您可能需要检查您的声音配置并确保您配置了通知声音。
  • 您是在 shell 终端中执行此操作吗?
【解决方案2】:

尝试包含 ncurses.h

#include <ncurses.h>

beep();

使用 -lncurses 标志编译

参考:http://invisible-island.net/ncurses/man/curs_beep.3x.html

还有这个问题:make sounds (beep) with c++

编辑

试试这个命令行

sudo sh -c "echo -e '\a' > /dev/console"

也可以试试http://www.linuxplayer.org/2010/04/beep-your-pc-speaker-in-linux给出的代码

int ms = 5000;
int freq = 440;
ioctl(fd, KDMKTONE, (ms<<16 | 1193180/freq));

【讨论】:

  • 没什么..没办法。但是哔声本身有效,因为在终端中我运行“哔声”并且它发出声音。
  • @Elemenophee 我在编辑后添加了更多解决方案。请也尝试一下。
  • 感谢您的帮助,但正如我在编辑中所说,我切换到 Java 并已经使用声音库进行了操作,因此我跳过了使用 beep 进行测试的步骤。
  • 最后一个链接失效了
猜你喜欢
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
相关资源
最近更新 更多