如何写入 tty 文件

如何写入 tty 文件

我想使用蜂鸣器的控制台 API 来产生音调,因为它的延迟比 evdev API 更低,但在图形 shell 中不允许这样做。

Ctrl++Alt打开F6tty6,登录后我可以运行

beep -e /dev/tty6

在图形外壳 tty7 中,您无法写入 /dev/tty7 或任何其他 tty 文件,并且禁止以 root 身份运行 beep。

https://github.com/spkr-beep/beep/issues/6#issuecomment-1264648890

维护人员在这里说,出于安全原因这不是一个好主意,但我不打算长期这样使用它。

答案1

beep禁止以 root 身份运行

在我的 Debian 10 beep1.4.3中以 root 身份运行。

我的测试表明,当环境中beepSUDO_UID、或时,SUDO_GID它将拒绝工作。为其执行的命令设置这些变量。SUDO_USERSUDO_COMMANDsudo

琐事:变量是sudo -u "$USER" beep不起作用的原因。有趣的是,它不起作用,因为beep这里以调用用户的身份执行,就像beep没有 一样sudo

我可以用来env -u …取消设置变量,或者只是env -i清除环境:

sudo env -i beep -e /dev/tty1

(我注意到我可以选择任何现有的tty;不需要事先登录到 tty)。但我不确定这是否有助于您降低延迟。sudo并且env是会增加延迟的附加程序。

或者,我可以调用sudo -i变量unset– 然后我可以调用beep -e …以 root 身份运行的变量。

相关内容