EDIT : 마지막으로 inotify를 사용했습니다. stefanB이 말했듯이, inotify가 사용할 것입니다. inotify를 사용하여 -f 모드 인 inotail을 구현하는 테일 복제본을 찾았습니다.C에서 "tail -f"기능의 사용자 지정 구현
원래 질문 텍스트 :
나는 다음과 같이 파이썬에서 개발 프로토 타입 목적으로 C 프로젝트의 "꼬리 -f"논리를 구현하기 위해 노력하고있어 :
# A forever loop, each 5 seconds writes a line into file.txt
from time import *
while 1:
sleep(5)
file = open("file.txt", "a")
file.write("This is a test\n")
file.close()
다음을 코드 (위의 코드에 의해 갱신) file.txt를의 EOF
# tail -f
from time import *
file = open("file.txt", "r")
file.seek(0, 2)
while 1:
line = file.readline()
if not line:
sleep(1)
else:
print line
file.close()
모든 잘 작동하지만 C 구현이 작동하지 않는 다음 (더 체크 오류 코드가 없습니다). stdio.h, string.h 및 unistd.h의 포함은 생략됩니다 (색상 화는 헤더 포함 코드를 숨 깁니다).
#define LINE_LEN 256
int main(int argc, char **argv)
{
FILE *f;
char line[LINE_LEN];
f = fopen("file.txt", "r");
fseek(f, 0, SEEK_END);
while (1)
{
fgets(line, LINE_LEN, f);
if (strlen(line) == 0)
{
sleep(1);
}
else
{
printf("Readed: %s", line);
}
}
fclose(f);
return 0;
}
몇 가지 아이디어가 있습니까?
제시된 해결책 대신 poll()을 사용하여 구현하는 것이 좋습니다.
미리 감사드립니다.
나는 그것을 시도했지만 동일한 행동을 얻었다. 감사합니다. –