Используя Cygwin в Windows, я хотел иметь звуковое уведомление о конкретных сообщениях в журнале сервера. Я написал следующее:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *f = fopen("/dev/stdin", "r");
char bar=' ';
if(f==NULL) {
return 1;
}
do {
bar = fgetc(f);
if((bar=='\n') || (bar=='\r')) {
printf("\a");
}
if(bar!=EOF) {
printf("%c", bar);
}
} while(bar!=EOF);
fclose(f);
printf("Done.\n");
return 0;
}
Затем я выполнил следующую команду:
tail -f serverlog | grep myMessage | ./alerty.exe
Иногда я получаю уведомления, а иногда нет.
У меня двоякие вопросы: 1) Что в моей программе на C не так? Почему я не могу постоянно читать вводимые данные? Это возбудило мое любопытство, поэтому я отчаянно хочу это узнать.
2) Как мне достичь первоначальной цели - заставить мою систему издавать звуковой сигнал, когда в файле появляется конкретный текст?