Maison > Tutoriel système > Linux > Pour lire les données d'un fichier, l'application appelle d'abord une fonction du système d'exploitation

Pour lire les données d'un fichier, l'application appelle d'abord une fonction du système d'exploitation

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-19 09:42:02
avant
527 Les gens l'ont consulté

Dans les E/S de fichier, pour lire les données d'un fichier descripteur de fichier Linux, l'application doit d'abord appeler la fonction du système d'exploitation et transmettre le nom du fichier, puis sélectionner un chemin d'accès au fichier pour ouvrir le fichier. Cette fonction renvoie un numéro de séquence, qui est le descripteur de fichier Perl (filehandle)descripteur de fichier Linux Le descripteur de fichier Perl est la seule base d'identification du fichier ouvert. Pour lire une donnée d'un fichier, l'application doit appeler la fonction ReadFile et transmettre l'adresse du descripteur de fichier Perl dans la mémoire vidéo et le nombre d'octets à copier au système d'exploitation. Lorsque la tâche est terminée, le fichier est fermé en appelant une fonction système.

Non seulement vous écrivez un programme d'intelligence artificielle imitant un philosophe solipsiste, mais votre programme utilise une méthode qui ne communique pas avec le monde extérieur. Dans les troisième et quatrième lignes de l'exemple de classe, vous verrez « GRADES », qui est un type de données qui fait référence à un autre fichier Perl, appelé descripteur de fichier. Un handle est un nom que vous donnez à un fichier, un périphérique, un socket ou un pipeline pour vous aider à vous souvenir du nom avec lequel vous travaillez et pour masquer les complexités des caches individuels, etc. (En interne, les poignées sont comme des flux en C++ ou des canaux d'E/S en BASIC.) Les poignées vous permettent d'entrer et de sortir plus facilement depuis différents endroits. L'une des choses qui font de Perl un bon langage est sa capacité à communiquer avec plusieurs fichiers et à les traiter tous en même temps. Avoir de bons noms symboliques pour les objets externes fait partie intégrante d'un bon langage [1].

Les autres éléments qui font de Perl un bon langage sont : il est 8 bits, il est intégrable et vous pouvez intégrer d'autres programmes dans Perl via le mode extension. Il est concis et facile à utiliser sur le Web. L'environnement est clair et facile à discuter. Vous pouvez le référencer de différentes manières (comme vu ci-dessus). En fait, le langage lui-même n'est pas si strictement structuré que vous ne pouvez pas dépasser votre question. Revenons à nouveau à TMTOWTDI.

Vous créez un handle et le connectez à un fichier via la fonction open. open prend deux paramètres : le handle et le nom d'un fichier que vous souhaitez y lier. Perl fournit également des handles prédéfinis (et pré-ouverts). STDIN est le canal d'entrée normal de votre programme et STDOUT est le canal de sortie normal de votre programme. STDERR est un canal de sortie supplémentaire afin que le programme puisse donner des instructions lors de la conversion de l'entrée en sortie [2].

Normalement, ces handles sont liés à votre terminal, vous pouvez donc taper votre programme et le voir, mais ils peuvent également être liés à des fichiers. Perl peut vous fournir ce handle prédéfini car votre système d'exploitation le fournit déjà. Sous UNIX, un processus hérite des entrées, sorties et erreurs standard de son processus parent (généralement un shell). L'une des responsabilités d'un shell est de structurer ce flux d'E/S afin que les processus enfants n'aient pas à s'en soucier).

linux文件句柄_句柄文件超多_句柄文件和文件句柄

Puisque vous pouvez créer des handles à diverses fins (entrée, sortie, pipeline) à l'aide de la fonction open, vous devez pouvoir spécifier ce que vous voulez faire. Tout comme sur la ligne de commande UNIX, vous ajoutez simplement des caractères au nom du fichier.

Copiez le code comme suit :

open(SESAME,"filename");#Lire à partir d'un fichier existant

句柄文件超多_linux文件句柄_句柄文件和文件句柄

open(SESAME,"open(SESAME,">filename");#Créez un fichier et écrivez-y

open(SESAME,">>filename");#Continuer à écrire dans le fichier existant

open(SESAME,"|output-pipe-command");#Créer un filtre de sortie

open(SESAME,"input-pipe-command|");#Créer un filtre d'entrée

Wie Sie gehört haben, können Sie einen beliebigen Namen wählen. Sobald ein SESAME-Handle geöffnet ist, kann es für den Zugriff auf Dateien oder Pipes verwendet werden, bis es explizit geschlossen wird (mit close(SESAME)) oder eine Reihe von Öffnungen für dasselbe Handle dieses Handle mit einer anderen Datei verknüpft [3 ].

Durch das Öffnen eines bereits geöffneten Handles wird implizit die erste Datei geschlossen, sodass sie für das Perl-Dateihandle nicht mehr verfügbar ist, und eine andere Datei geöffnet. Sie müssen sich darüber im Klaren sein, dass Sie dies wirklich tun möchten. Manchmal kommt es vor, dass Linux-Download-Tools zufällig auftreten. Wenn Sie beispielsweise ($handle,$file) öffnen, enthält $handle zufällig eine leere Zeichenfolge (null). Stellen Sie sicher, dass $handle auf einen einzelnen Wert gesetzt ist, sonst öffnen Sie eine neue Datei mit einem Null-Handle.

句柄文件超多_句柄文件和文件句柄_linux文件句柄

Sobald Sie ein Handle zur Eingabe geöffnet haben (oder STDIN verwenden), können Sie mit der „Zeilenleseoperation“ eine Zeile lesen. Aufgrund seiner Form wird dieser Vorgang auch als Maurerbetrieb bezeichnet. Diese Mauerwerksoperation enthält das handle()[4], das Sie lesen möchten. Verwenden Sie das STDID-Handle, um die vom Benutzer bereitgestellte Antwort wie folgt zu lesen:

Der Vorgang „Empty Masonry“ liest aus allen in der Befehlszeile angegebenen Dateien. Wenn nicht angegeben, wird aus STDIN gelesen. (Dies ist das Standardverhalten vieler UNIX-„Filter“-Programme)

Kopieren Sie den Code wie folgt:

句柄文件超多_句柄文件和文件句柄_linux文件句柄

printSTDOUT"Enteranumber:";#Aufforderung zur Eingabe einer Nummer

$number=;#Geben Sie eine Zahl ein

printSTDOUT"Thenumberis$number";#Diese Nummer ausgeben

Verstehen Sie das Beispiel, das wir Ihnen gegeben haben? Was macht STDOUT im Drucksatz? Dies ist eine der Möglichkeiten, wie Sie einen Ausgabehandler verwenden. Ein Handle kann als erster Parameter der print-Anweisung verwendet werden. Wenn es vorhanden ist, gibt es an, wo ausgegeben werden soll. Im Beispiel ist das Handle überflüssig, da die Ausgabe bereits STDOUT ist. Der Standardwert für die Eingabe ist STDIN und für die Ausgabe STDOUT. (Wir haben Zeile 18 des Gegenbeispiels der Klasse weggelassen, um Sie nicht zu verwirren.)

Wir haben auch eine Sache, die Sie nicht verstehen. Wenn Sie das darin enthaltene Beispiel ausprobieren, werden Sie feststellen, dass Sie eine sehr leere Zeile erhalten. Weil Sie beim Lesen das Zeilenumbruchzeichen (Newline) nicht manuell aus Ihrer Eingabezeile entfernt haben (Sie haben beispielsweise „9“ eingegeben). Für diesen Fall, wenn Sie Zeilenumbrüche entfernen möchten, stellt Perl die Funktionen Chop und Chomp bereit. Chop löscht wahllos das zuletzt übergebene Zeichen (und gibt es zurück), während chomp nur das Ende der Datensatzkennung (normalerweise „“) löscht und die Anzahl der so gelöschten Zeichen zurückgibt.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:itcool.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
数据库数据
Depuis 1970-01-01 08:00:00
0
0
0
php数据获取?
Depuis 1970-01-01 08:00:00
0
0
0
数据表里没数据显示
Depuis 1970-01-01 08:00:00
0
0
0
数据表
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal