C - printf("\a") 不会发出警报

Mas*_*man 2 c bash alert

这是我的 C 代码。

#include <stdio.h>

int main(){
   printf("\a\n");
   printf("Startled by the sudden sound, Sally shouted, \"By the Great Pumpkin, what was that!?\"");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

据说,“\a\n”应该发出警报,对吗?然而,出于某种原因,它并没有这样做。我在 Ubuntu Zesty 上,bash 命令beep确实发出哔哔声,但echo -e '\a'没有,所以我不确定问题到底是什么。

提出这个问题是因为其他这样的问题最终没有产生对我来说足够详细/可以理解的答案,或者有一个完全不同的问题,其解决方案不适用于我。

坦率地说,上面链接的帖子的答案太模糊了。“问题不在于 C,而在于别的东西。” 根本没有帮助。

更新:以防万一其他人偶然发现了这一点,这是问题所在:我有 GNOME,因此 WM 是 Gnome-Shell。既然是这样,我就不得不打开声音设置,转到警报,启用它们,并调高音量。我从来没有注意到外壳本身可能是问题所在。在跑步后metacity --replace突然能够听到警报后意识到这一点。

Bat*_*eba 5

您确实写对了:并且附加的\n是不延迟哔声输出的惯用方式。

但遗憾的是,现代操作系统允许用户配置他们的环境,因此可以抑制这种蜂鸣声。这可能就是这里发生的事情:更深入地研究您的问题,似乎您的外壳已禁用标准输出上的哔哔声。

  • ...并且 `fflush(stdout)` 是更好的 IMO,因为附加的 `\n` 具有不一定需要的副作用。 (2认同)