システムのビープ音を使用して、特定の周波数と長さ (さまざまな音声信号に対して) のビープ音を生成したいと考えています (ビープ音を使用できない/アクセスできない場合はスピーカーのみ)。ioctl を使用してこれを実行できることはわかっていますが、それには root アクセスが必要であり、これは望ましくありません。
「ビープ」コマンドを使用できることはわかっていますが、それは依存関係であり、可能であれば使用すべきではありません (外部依存関係はまったくなく、基本的な Linux ライブラリと C だけです)。
私が現在持っているのは次のコードです(ただし、これを実行するにはスーパーユーザー権限が必要です):
#include <stdlib.h>
#include <fcntl.h>
#include <linux/kd.h>
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])));
}
これを行う方法が他にない場合は、ビープ音を使用しますが、依存関係を避けてビープ音をスクリプトに直接統合したいのですが、ここの誰かが解決策/回避策を知っていると確信しています.
プログラムはできるだけ軽量にする必要があるため、外部ライブラリは本当に必要ありません。