EDIT:最後に、私は使用しました。 stefanBが言うように、inotifyは使用するものです。私はinotifyを使って-fモード、inotailを実装したテールクローンを見つけました。Cの "tail -f"機能のカスタム実装
元の質問文:
私は次のようにPythonで、それを開発したプロトタイピングのために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()を使用して実装することをお勧めしますか。
ありがとうございます。
私はそれを試しましたが、私は同じ動作を得ました。 ありがとう! –