Hallo, Martin Steigerwald wrote:
> Ich dachte ein tty ist ein Terminal und zwar eigentlich nur eines auf > einer "echten" Console, da die in KDE Konsole ja als pts gehandhabt > werden. Eine Datei ist doch ebensowenig ein tty wie /dev/null oder gibts > da noch einen diffiziellen Unterschied? Irgendwie interessiert mich das jetzt auch :-) So weit ich weiß (ich lasse mich aber sehr gerne korrigieren), zählt ein pts auch als tty. Ein kurzer Test: [EMAIL PROTECTED]:/tmp $ cat test.c #include <stdio.h> #include <unistd.h> int main(){ if (!isatty(STDERR_FILENO)) printf("stderr is not a tty\n"); else printf("stderr is a tty\n"); printf("test\n"); } [EMAIL PROTECTED]:/tmp $ ./test stderr is a tty test [EMAIL PROTECTED]:/tmp $ ./test 2>/dev/null stderr is not a tty test Bei diesem Minimalbeispiel kann man auch das gleiche wie bei dem 'strace free' beobachten (auf den relevanten Teil gekürzt): [EMAIL PROTECTED]:/tmp $ strace ./test write(1, "stderr is a tty\n", 16stderr is a tty ) = 16 write(1, "test\n", 5test ) = 5 [EMAIL PROTECTED]:/tmp $ strace ./test 2>&1 >/dev/null ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfc8be14) = -1 ENOTTY (Inappropriate ioctl for device) write(1, "stderr is a tty\ntest\n", 21) = 21 Hier wird's jetzt wackelig :-) Ich kann mir gut vorstellen, dass es in der libc (die ja letztendlich die printf()-Aufrufe aus 'free' und dem obigen Testprogramm in die write()-Aufrufe umsetzt) prüft, wohin geschrieben werden soll. Wenn es sich um ein Terminal handelt -> ungepuffert schreiben (= 2x write), ansonst gepuffert schreiben (= 1x write). So wird die Anzahl der Syscalls reduziert, solange nicht jemand gerade auf's Terminal guckt, der ja Ausgaben sofort sehen will. So, gute Nacht, Wolf -- Ich halte mich für unersetzlich, andererseits sieht man ja, dass die Friedhöfe voll sind von Unersetzlichen... (Günther Jauch) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)