.\" -*- coding: UTF-8 -*- .\" From dholland@burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998 .\" .\" This man page was written in 1998 by David A. Holland .\" Polished a bit by aeb. .\" .\" %%%LICENSE_START(PUBLIC_DOMAIN) .\" Placed in the Public Domain. .\" %%%LICENSE_END .\" .\" 2005-06-16 mtk, mentioned freopen() .\" 2007-12-08, mtk, Converted from mdoc to man macros .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH stdin 3 "24. Dezember 2024" "Linux man\-pages 6.12" .SH BEZEICHNUNG stdin, stdout, stderr \- Standard\-E/A\-Datenströme .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP,\ \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .P \fBextern\ FILE\ \ *\fP\fIstdin\fP\fB;\fP \fBextern\ FILE\ \ *\fP\fIstdout\fP\fB;\fP \fBextern\ FILE\ \ *\fP\fIstderr\fP\fB;\fP .fi .SH BESCHREIBUNG Unter normalen Bedingungen werden beim Start jedes UNIX\-Programms drei Datenströme geöffnet: Einen für die Eingabe, einen für die Ausgabe und einen zur Ausgabe von Diagnose\- oder Fehlermeldungen. Diese werden typischerweise an das Terminal des Benutzers angehängt (siehe \fBtty\fP(4)), könnten sich stattdessen aber auch auf Dateien oder andere Geräte beziehen, abhängig von der Wahl des übergeordneten Prozesses. (Siehe auch den Abschnitt »Redirections« von \fBsh\fP(1).) .P Der Eingabedatenstrom wird als »Standardeingabe«, der Ausgabedatenstrom als »Standardausgabe« und der Fehlerdatenstrom wird als »Standardfehler« referenziert. Die englische Form dieser Begriffe wird abgekürzt, um sich auf die Dateien zu beziehen, und zwar als \fIstdin\fP, \fIstdout\fP und \fIstderr\fP. .P Jedes dieser Symbole ist ein \fBstdio\fP(3)\-Makro des Typs Zeiger auf \fIFILE\fP und kann mit Funktionen wie \fBfprintf\fP(3) oder \fBfread\fP(3) verwandt werden. .P Da \fIFILE\fPs ein puffernder Wrapper um UNIX\-Dateideskriptoren sind, kann auf die gleichen zugrundeliegenden Dateien auch mittels der rohen UNIX\-Dateischnittstelle zugegriffen werden, d.h. mittels Funktionen wie \fBread\fP(2) und \fBlseek\fP(2). .P Beim Starten eines Programms sind die ganzzahligen, den Datenströmen \fIstdin\fP, \fIstdout\fP und \fIstderr\fP zugeordneten Dateideskriptoren 0, 1 bzw. 2. Die Präprozessorsysmbole \fBSTDIN_FILENO\fP, \fBSTDOUT_FILENO\fP und \fBSTDERR_FILENO\fP sind mit diesen Werten in \fI\fP definiert. (Durch \fBfreopen\fP(3) auf einen dieser Datenströme kann die dem Datenstrom zugeordnete Dateideskriptornummer geändert werden.) .P Beachten Sie, dass das Vermischen von \fIFILE\fPs und rohen Dateideskriptoren zu unerwarteten Ergebnissen führen kann und im Allgemeinen vermieden werden sollte. (Für die Masochisten: POSIX.1, Abschnitt 8.2.3 beschreibt im Detail, wie diese Wechselwirkung funktionieren soll.) Die allgemeine Regel lautet, dass Dateideskriptoren im Kernel gehandhabt werden, während Stdio nur eine Bibliothek ist. Das bedeutet beispielsweise, dass der Kindprozess nach einem \fBexec\fP(3) alle offenen Dateideskripten erbt, aber der Zugriff auf alle alten Datenströme nicht mehr möglich ist. .P Da die Symbole \fIstdin\fP, \fIstdout\fP und \fIstderr\fP als Makros spezifiziert sind, ist eine Zuweisung an sie nicht portierbar. Die Standard\-Datenströme können mit der Hilfe der Bibliotheksfunktion \fBfreopen\fP(3) dazu gebracht werden, auf andere Dateien zu zeigen. Dies wurde insbesondere eingeführt, um die Zuweisung von \fIstdin\fP, \fIstdout\fP und \fIstderr\fP ändern zu können. Die Standarddatenströme werden durch einen Aufruf von \fBexit\fP(3) und bei der normalen Programmbeendigung geschlossen. .SH STANDARDS C11, POSIX.1\-2008. .P Die Standards fordern auch, dass diese drei Datenströme beim Starten eines Programms geöffnet werden. .SH GESCHICHTE C89, POSIX.1\-2001. .SH ANMERKUNGEN Der Datenstrom \fIstderr\fP ist nicht gepuffert. Der Datenstrom \fIstdout\fP ist zeilenweise gepuffert, wenn er auf ein Terminal zeigt. Unvollständige Zeilen werden nicht auftauchen, bis \fBfflush\fP(3) oder \fBexit\fP(3) aufgerufen werden oder ein Zeilenumbruch ausgegeben wird. Dies kann zu unerwarteten Ausgaben führen, insbesondere bei der Fehlersuche. Der Puffermodus der Standard\-Datenströme (oder aller anderen Datenströme) kann mittels der Aufrufe \fBsetbuf\fP(3) oder \fBsetvbuf\fP(3) geändert werden. Beachten Sie, dass es auch Eingabepufferung im Terminal gibt (für den Fall, dass \fIstdin\fP einem Terminal zugeordnet ist), die vollkommen unabhängig von der Stdio\-Pufferung ist. (Tatsächlich ist die normale Terminaleingabe zeilenweise im Kernel gepuffert.) Diese Kernel\-Eingabehandhabung kann mit Aufrufen wie \fBtcsetattr\fP(3) geändert werden; siehe auch \fBstty\fP(1) und \fBtermios\fP(3). .SH "SIEHE AUCH" \fBcsh\fP(1), \fBsh\fP(1), \fBopen\fP(2), \fBfopen\fP(3), \fBstdio\fP(3) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .