Thread Wachsenden Dateien folgen: tail -f (33 answers)
Opened by sid burn at 2006-10-06 00:49

sid burn
 2006-10-06 02:21
#70517 #70517
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=betterworld,05.Oct..2006, 23:59][quote=sid burn,05.10.2006, 22:49]Zusätzlich gibt mir "tail -f" aber immer noch die Daten sofort aus, die ich an einer Datei anhänge.[/quote]
Das stimmt nicht. Ueber strace findet man raus, dass tail -f auch immer eine Sekunde wartet. Mit bloßem Auge faellt das aber kaum auf, weil die Reaktionsgeschwindigkeit nicht so schnell ist, außerdem hat man nur selten Vergleichsgelegenheit.[/quote]
Jau, stimmt!

Und doch, dass kann man sogar recht gut testen. Einfach zwei Terminal Emulatoren öffnen. Den einen mit "tail -f datei" füttern und in der anderen Datei "echo -n "blablub" >> datei" eintippen. Dann sieht man auch die Verzögerung bei "tail". Eine Sekunde Reaktionszeit bekommt man ohne Probleme mit.

Komischerweise kamm mir das "tail" immer so vor als wenn es "sofort" senden würde.

Naja, dann eben umändern des Titels. Ein besseres "tail -f" in Perl. ;)



Quote
unter windows funzt dein script kein stück.
es word nichtmal die datei ausgegeben.

Wow. Auch nicht vom zweiten Code Schnipsel, wo nur sysread() und syswrite() vorkommt?

Ja Inotify ist mir bekannt, dachte aber es gäbe da eine Portable Lösung.

Wahrscheinlich so wie es sich anhört muss man wirklich den Kernel nach solchen Informationen anfragen.

Quote
Und das Programm wartet. Hier gibt es also einen speziellen "kernel event notification mechanism". Linux hat bestimmt etwas Ähnliches, oder verwendet eben auch nur den sleep 0.1-Workaround. Schau mal mit strace rein.

Ist so wie betterworld sagte, es wartet in einer Schleife immer 1 Sek.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
write(1, "foofoofoofoobarbarbarbartesttest"..., 75foofoofoofoobarbarbarbartesttesttesttesttesttestblubblubhkjhblablablablabla) = 75
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, NULL) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=208, ...}) = 0
nanosleep({1, 0}, <unfinished ...>
\n\n

<!--EDIT|sid burn|1160087082-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Wachsenden Dateien folgen: tail -f