LINUX.ORG.RU

аналог tail -F


0

0

хотел бы тут программу написать, точнее парсер логов на C, перла не знаю, так бы на нём писал, короче как при появлении новой строки в файле передавать эту новую строку в функцию для обработки?


Можно предложить писать логи не в файл, а в именованный пайп (или не только в файл, а еще и в пайп). Чтение из него будет происходить простым и незатейливым способом, блокируясь при отсутствии новых данных.

Отвечая на поставленный вопрос.

		while (!feof(fp) && (ch = getc(fp)) != EOF)
			if (putchar(ch) == EOF)
				oerr();
		if (ferror(fp)) {
			ierr();
			return;
		}
		(void)fflush(stdout);
		if (!fflag)
			break;
		sleep(1);
		clearerr(fp);

		if (stat(fname, &nsb) != 0)
			continue;
		/* Reopen file if the inode changes or file was truncated */
                /* и дальше все по новой */

fflag как раз отвечает за -f.

Короче говоря, дочитали до конца, заснули, если изменился размер, то сбросили флаг ошибки и стали читать дальше.

anonymous
()
Ответ на: комментарий от anonymous

Вот ведь, обычно включаешь TeX paragraph

anonymous
()
Ответ на: комментарий от logIN

мне не нужен второй tail :) это просто для пояснения вопроса... разобрался, сделал с select...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.