Tôi muốn tạo âm thanh tiếng bíp với tần số và độ dài cụ thể (cho các tín hiệu âm thanh khác nhau) bằng cách sử dụng tiếng bíp hệ thống (và chỉ loa nếu không có tiếng bíp). Tôi biết nó có thể làm điều này bằng cách sử dụng ioctl, nhưng điều đó đòi hỏi quyền truy cập root, mà tôi không muốn.Bíp trên Linux trong C
Tôi biết tôi chỉ có thể sử dụng lệnh "bíp", nhưng đó sẽ là phụ thuộc, nếu có thể, không được sử dụng (không phụ thuộc vào bên ngoài, chỉ các thư viện linux cơ bản và C).
Những gì tôi đang có là đoạn mã sau (nhưng điều này đòi hỏi đặc quyền superuser để chạy):
#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])));
}
Nếu không có cách nào khác để làm điều này, sau đó tôi sẽ sử dụng tiếng bíp, nhưng tôi thực sự muốn để tránh sự phụ thuộc và tích hợp tiếng bíp trực tiếp vào kịch bản của tôi, nhưng tôi chắc rằng ai đó ở đây sẽ biết giải pháp/giải pháp thay thế.
Tôi không thực sự muốn thư viện bên ngoài vì chương trình phải nhẹ nhất có thể.
Nếu chạy dưới máy tính để bàn, bạn có thể sử dụng ALSA. Và bạn cũng có thể sử dụng lệnh 'play' ... Và một số máy tính để bàn có thông báo ... –
@BasileStarynkevitch Chẳng phải đó là những thứ quá phức tạp sao? Tôi chỉ muốn một tiếng bíp đơn giản với tần số và độ dài cụ thể. Như tôi đã nói với Pablo, tôi muốn giữ nó nhẹ nhất có thể, nhưng tôi cho rằng sử dụng tiếng bíp hoặc suid để có quyền truy cập root là cách để đi, sau đó? – omnidan
Xem nếu [this] (http://stackoverflow.com/questions/412789/windows-beep-equivalent-for-linux) giúp bạn. @paxdiablo tuyên bố nó có thể chạy từ một tài khoản người dùng quá. –