Я хочу генерировать звуковой сигнал с определенной частотой и длиной (для различных звуковых сигналов )с помощью системного звукового сигнала (и только динамиков, если звуковой сигнал недоступен / доступный ). Я знаю, что это можно сделать с помощью ioctl, но для этого требуется root-доступ, чего я не хочу.
Я знаю, что могу просто использовать команду "beep", но это будет зависимость, которую, по возможности, не следует использовать (вообще никаких внешних зависимостей, только основные библиотеки 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])));
}
Если нет другого способа сделать это, то я буду использовать beep, но я бы очень хотел избежать зависимостей и интегрировать звуковой сигнал прямо в мой сценарий, но я уверен, что кто-то здесь знает решение/обходной путь.
Мне не очень нужны внешние библиотеки, так как программа должна быть как можно более легкой.