目前我正在使用以下代码在带有C的Linux中的PC扬声器上发出哔声。
int speaker_desc;
// Returns 0 on success
int register_speaker() {
return (speaker_desc = open("/dev/console", O_RDONLY)) == -1;
}
void unregister_speaker() {
close(speaker_desc);
}
void beep(int pulse_length, int duration) {
int arg = (duration << 16) | (pulse_length & 0xffff);
ioctl(speaker_desc, KDMKTONE, arg);
}
现在的问题是,如果程序没有在超级用户下运行,register_speaker()
将失败。这有解决方法吗?因为我习惯于能够在Windows下使用用户权限操作PC扬声器,并且常规BEL
- 字符也会在没有超级用户的情况下发出蜂鸣声。