Zum Hauptinhalt springen

Standard-E / A-Streams unter Linux: Eine vollständige Anleitung

Eines der wichtigsten Merkmale des Linux-Betriebssystems ist sein flexibles System für die Interaktion mit Benutzern und anderen Programmen. Einer der Hauptmechanismen dieses Systems sind Standard-E / A-Streams, mit denen Informationen zwischen Programmen und Benutzern übertragen werden können.

Es gibt drei Standardeingabeströme: Standardeingabe (stdin), Standardausgabe (stdout) und Standardfehlerausgabe (stderr). Die Standardeingabe dient dazu, Daten von einem Benutzer oder einem anderen Programm zu akzeptieren. Die Standardausgabe wird für die Ausgabe von Programmdaten verwendet, die Standardausgabe für Fehlermeldungen oder Warnungen.

Standard-E / A-Streams spielen eine Schlüsselrolle in der Linux-Befehlszeile. Sie ermöglichen es Ihnen, Datenströme zwischen Programmen umzuleiten, sie zum Erstellen von Befehlsketten zu verwenden und die E / A in Echtzeit zu steuern. Außerdem werden sie zur Fehlerbehandlung und zum Debuggen von Programmen verwendet.

Die Kenntnis der Standard-E / A-Threads unter Linux ist eine notwendige Fähigkeit für Systemadministratoren, Entwickler und alle, die an der Befehlszeile arbeiten. In diesem Artikel werden wir die grundlegenden Funktionen und Befehle im Zusammenhang mit Standard-E / A-Threads unter Linux untersuchen und erfahren, wie Sie diese effektiv nutzen können.

Was sind Standardeingabe-, Ausgabe- und Fehlerthreads unter Linux?

Standardeingabestrom (stdin) ist die primäre Eingabequelle für das Programm. Es kommuniziert normalerweise mit einer Tastatur oder einem anderen Eingabegerät. Mit einem Standardeingabestrom kann das Programm Daten lesen, die vom Benutzer eingegeben oder aus einer Datei umgeleitet wurden.

Standardausgabestrom (stdout) entwickelt, um die Ergebnisse des Programms anzuzeigen. Es kommuniziert normalerweise mit einem Bildschirm oder einem anderen Ausgabegerät. Sie können einen Standardausgabestrom für die Ausgabe von Nachrichten, Berechnungsergebnissen und anderen Informationen verwenden.

Standardfehlerfluss (stderr) wird zum Anzeigen von Fehlermeldungen und Warnungen verwendet. Es kommuniziert auch mit einem Bildschirm oder einem anderen Ausgabegerät. Der Unterschied zwischen dem Fehlerstream und dem Ausgabestream besteht darin, dass Fehlermeldungen normalerweise unabhängig vom Ergebnis des Programms ausgegeben werden.

Standard-E / A-, Ausgabe- und Fehlerströme sind für die Ausführung von Programmen unter Linux sehr wichtig. Mit diesen können Sie effektiv mit dem Benutzer interagieren, Daten aus externen Quellen abrufen und Informationen über den Prozess des Programms ausgeben.

Standard-Eingabestrom

Wenn das Programm gestartet wird, wird es automatisch mit dem Standardeingabefluss verknüpft. Dadurch kann das Programm Daten lesen, die der Benutzer über die Tastatur eingegeben hat, oder Informationen von anderen Programmen erhalten, die seine Ausgabe an stdin umleiten.

Unter Linux ist stdin ein Dateideskriptor mit dem Wert 0. Das bedeutet, dass wir bei der Arbeit mit stdin praktisch alle Funktionen der Dateiverwaltung verwenden können, z. B. Lesen, Schreiben und Bewegen des Cursors.

Sie können die Funktion scanf() oder getchar() im Programm verwenden, um Daten aus dem Standardeingabestream zu lesen. Mit der Funktion scanf() können Sie verschiedene Arten von Daten lesen, z. B. ganze Zahlen, Zeichen oder Strings. Die Funktion getchar() wird verwendet, um nur ein Zeichen zu lesen.

FunktionDie Beschreibung
scanf(format, . ) Liest Daten aus stdin gemäß dem angegebenen Format.
getchar() Liest und gibt ein einzelnes Zeichen von stdin zurück.

Programme können ihre Eingabe auch aus einer Datei anstelle des Standardeingabestroms umleiten, indem sie die Umleitungsanweisungen in der Befehlszeile verwenden. Zum Beispiel, um Daten aus einer Input-Datei zu lesen.txt, können Sie den folgenden Befehl ausführen:

Dadurch kann das Programm Daten aus der Input-Datei lesen.txt statt Tastaturdaten zu lesen.

Standardausgabestrom

Standardmäßig wird stdout auf den Bildschirm des Terminals gerichtet, auf dem das Programm ausgeführt wird. Dadurch kann das Programm mit dem Benutzer interagieren, Arbeitsergebnisse anzeigen, Fehlermeldungen anzeigen und vieles mehr.

Wie andere Standard-E / A–Threads hat stdout seinen Dateideskriptor - 1. Verwenden Sie die write() -Funktion aus der libc-Bibliothek, um Daten in stdout zu schreiben.

Das Programm kann die Richtung von stdout ändern, indem es auf eine andere Datei oder einen anderen Kanal umgeleitet wird. Dadurch kann das Programm die Ausgabe in Dateien speichern, an andere Programme übertragen oder zur weiteren Verarbeitung verwenden.

Grundlegende Anwendungen des Standardausgabestroms:

1Zeigt die Ergebnisse des Programms auf dem Terminal-Bildschirm an
2Senden von Fehlermeldungen an stderr, um die normale Ausgabe nicht zu stören
3Umleiten der Ausgabe in eine Datei, um die Ergebnisse zu speichern
4Übertragung der Ausgabe an andere Programme zur weiteren Verarbeitung

Wenn das Programm die Ausgaberichtung nicht explizit angibt, werden die Daten an den Standardausgabestream von stdout gesendet. Dieser Thread wird automatisch geöffnet, wenn das Programm gestartet wird, und wird geschlossen, wenn es beendet wird.

Der Stdout-Standardausgabestrom ist ein wichtiges Werkzeug für die Interaktion eines Programms mit dem Betriebssystem unter Linux. Das Verständnis seiner Funktionsweise und Funktionen ermöglicht es Ihnen, die Datenausgabe in einer Linux-Umgebung effizient zu nutzen und zu verwalten.

Standardfehlerfluss

Unter Linux ist stderr normalerweise mit dem Terminal oder der Konsole verbunden, auf der der Prozess ausgeführt wird. Es ermöglicht dem Betriebssystem und den Programmen, Fehler- und Warnmeldungen sowie Informationen zum aktuellen Status des Programms anzuzeigen.

Im Gegensatz zur Standardausgabe wird stderr normalerweise nicht umgeleitet, wenn Befehle ausgeführt werden. Dies ermöglicht Programmentwicklern und Systemadministratoren, Probleme im Programmbetrieb schnell zu erkennen und zu lokalisieren.

Die Funktion fprintf(stderr, "Fehlermeldung") wird in der Programmiersprache C verwendet, um Fehlermeldungen in stderr auszugeben. In Shell-Skripten können Sie den Fehlerumleitungsoperator "2>" verwenden, um stderr in eine Datei umzuleiten.

Beispiel für die Verwendung von stderr:

#include int main()

Wie im Beispiel zu sehen ist, lautet die Meldung "Ein Fehler ist aufgetreten!" wird in stderr ausgegeben und wird auf dem Terminal oder der Konsole angezeigt, wenn das Programm ausgeführt wird.

Mit stderr können Sie zuverlässigere und debuggte Programme erstellen, da der Entwickler Informationen zu Problemen erhalten kann, die während der Ausführung des Programms auftreten.

So verwenden Sie die standardmäßigen Eingabeaufforderungs-, Ausgabeund Fehlerthreads

Der Standardeingabestream (stdin) wird verwendet, um Daten von der Befehlszeile abzurufen. Es ist normalerweise mit der Tastatur verbunden, und standardmäßig liest das Programm die Eingabe davon aus. Sie können jedoch einen Standardeingabestrom aus einer Datei umleiten oder eine Pipeline verwenden, um Daten von einem Programm in ein anderes zu übertragen.

Der Standardausgabestream (stdout) wird verwendet, um die Ergebnisse des Programms auszugeben. Es ist normalerweise mit dem Bildschirm verbunden und wird standardmäßig dort angezeigt. Sie können jedoch einen Standardausgabestream in eine Datei umleiten oder eine Pipeline verwenden, um Daten von einem Programm in ein anderes zu übertragen. Um beispielsweise die Ausgabe eines Programms in eine Datei zu schreiben, können Sie den folgenden Befehl verwenden:

$ ./program > output.txt

Der Standardfehlerstrom (stderr) wird verwendet, um Fehlermeldungen für das Programm auszugeben. Es ist normalerweise auch mit dem Bildschirm verbunden und wird dort zusammen mit dem Ausgabestrom ausgegeben. Sie können jedoch den Standardfehlerstrom in eine Datei umleiten, um die Fehlermeldungen von der Programmausgabe zu trennen. Um beispielsweise Fehlermeldungen in einer Datei zu speichern, können Sie den folgenden Befehl verwenden:

$ ./program 2> error.txt

Durch die Umleitung von Standard-E/A- und Fehlerströmen können Sie Programmdaten, -ausgaben und -nachrichten flexibel über die Befehlszeile verwalten. Es ist ein sehr nützliches Werkzeug für die Entwicklung und das Debuggen von Programmen sowie für die Automatisierung von Aufgaben bei der Arbeit mit der Befehlszeile unter Linux.

Umleiten von Standard-E / A-, Ausgabe- und Fehlerthreads

Unter Linux gibt es verschiedene Möglichkeiten, Standardthreads umzuleiten, wodurch Sie die Eingabe, Ausgabe und Fehlerbehandlung in der Befehlszeile flexibel verwalten können.

Um die Standardausgabe eines Programms in eine Datei umzuleiten, wird das Zeichen '>' verwendet, gefolgt von dem Dateinamen. Zum Beispiel:

Dieser Befehl leitet die Ausgabe des Befehls um ls in Datei output.txt. Wenn die Datei nicht existiert, wird sie erstellt, und wenn sie existiert, wird sie überschrieben.

Wenn Sie die Programmausgabe am Ende einer vorhandenen Datei hinzufügen möchten, wird das Symbol '>>' verwendet. Zum Beispiel:

ls -l >> output.txt

Dieser Befehl fügt die Ausgabe des Befehls hinzu ls -l am Ende der Datei output.txt.

Um die Standardeingabe eines Programms aus einer Datei umzuleiten, wird das Symbol ' verwendet

Dieser Befehl nimmt den Inhalt der Datei auf input.txt und wird es an den Eingabestrom des Befehls übergeben sort zum Sortieren.

Wenn Sie sowohl die Standardausgabe als auch die Standardeingabe eines Programms umleiten möchten, wird das Zeichen ' verwendet

grep "error" < input.txt >output.txt

Dieser Befehl nimmt den Inhalt der Datei auf input.txt und wird es an den Eingabestrom des Befehls übergeben grep "error" und leitet dann die Ausgabe dieses Befehls in eine Datei um output.txt.

Es ist auch möglich, den Fehlerstrom umzuleiten. Dazu wird das Zeichen '2>' verwendet, gefolgt von dem Dateinamen. Zum Beispiel:

ls file.txt file2.txt 2> error.txt

Dieser Befehl führt den Befehl aus ls file.txt file2.txt und leitet dann alle Fehlermeldungen in die Datei um error.txt.

Die Umleitung von Standardthreads ermöglicht die Verwaltung von Eingabe, Ausgabe und Fehlerbehandlung in der Linux-Befehlszeile, wodurch die Arbeit mit Programmen und Befehlen flexibler und effizienter wird.