Maison Opération et maintenance exploitation et maintenance Linux Introduction détaillée aux descripteurs de fichiers et aux pointeurs de fichiers sous Linux

Introduction détaillée aux descripteurs de fichiers et aux pointeurs de fichiers sous Linux

Jun 02, 2017 am 09:56 AM

Cet article présente principalement des informations détaillées sur les descripteurs de fichiers et les pointeurs de fichiers sous Linux Les amis dans le besoin peuvent se référer aux

Descripteurs de fichiers sous Linux Descripteurs et pointeurs de fichiers.

Identifiant de fichier :

Tout d'abord, comprenons ce qu'est un identifiant de fichier ?

Description du fichier Un symbole est un terme en informatique et est un concept abstrait utilisé pour exprimer une référence d'un fichier.

Sous Linux, chaque processus enregistrera une table de descripteurs de fichiers dans le bloc de contrôle de processus (PCB). Le descripteur de fichier est l'index de cette table. >

pointeur vers le fichier déjà ouvert.

Chaque processus Linux doit avoir trois descripteurs de fichiers standards, correspondant à trois flux standards.

IntegerValeur Nom (unistd.h)Symbole Flux de fichiers constant
整数 名称 (unistd.h)符号常量 (stdio.h)文件流
0 Standard input STDIN_FILENO stdin
1 Standard output STDOUT_FILENO stdout
2 Standard error STDERR_FILENO stderr
(stdio.h)
0 Entrée standard STDIN_FILE

NON

stdin
1 Sortie standard STDOUT_FILENO stdout
2 Erreur standard STDERR_FILENO stderr

Le descripteur de fichier est Formellement, il s'agit d'un entier non négatif. En fait, il s'agit d'une valeur d'index pointant vers la table d'enregistrement des fichiers ouverts par le processus maintenu par le noyau pour chaque processus. Lorsqu'un programme ouvre un fichier existant ou crée un nouveau fichier, le noyau renvoie un descripteur de fichier au processus. En programmation, certaines programmations de bas niveau tournent souvent autour de descripteurs de fichiers. Cependant, le concept de descripteurs de fichiers n'est souvent applicable qu'aux systèmes d'exploitation tels que UNIX et Linux

Opérations liées aux descripteurs de fichiers :

<. th>Fonction
Opération
Génération de descripteur de fichier open(), socket() , pipe(), etc.
Opérations liées à un seul descripteur de fichier read(), write(), send(), fchmod

(), etc.

Opérations liées aux descripteurs de fichiers pluriels select(), poll(), etc. .
Opérations liées à la table des descripteurs de fichiers close(), dup(), etc. .

Pointeur de fichier :
功能 操作
文件描述符生成 open()、socket()、pipe()等
与单一文件描述符相关的操作 read()、write()、send()、fchmod()等
与复数文件描述符相关的操作 select()、poll()等
与文件描述符表相关度的操作 close()、dup()等

Le pointeur de fichier est celui que nous utilisons dans
Langage C
Ce que j'ai appris, c'est qu'en langage C, un pointeur

variable

est utilisé pour pointer vers un fichier. Ce pointeur est appelé pointeur de fichier. Grâce au pointeur de fichier, nous pouvons effectuer diverses opérations sur le fichier pointé. Le langage C utilise des pointeurs de fichiers au lieu de descripteurs de fichiers comme gestionnaires d'E/S. Le pointeur de fichier pointe vers une structure de données appelée structure FILE dans la zone utilisateur du processus. La structure FILE contient un tampon et un descripteur de fichier. Le pointeur de fichier est un format courant du langage C, il est donc relativement plus facile à transplanter.Nous obtenons généralement le pointeur de fichier :

Obtenir le pointeur plus tard , nous pouvons obtenir les informations du descripteur de fichier dans le pointeur.

Le descripteur de fichier est unique, mais le pointeur de fichier n'est pas unique. L'
FILE *fp = fopen("test.txt","r");
Copier après la connexion
objet

pointé par le pointeur de fichier est unique.

Conversion des descripteurs de fichiers et des pointeurs de fichiers :

Le premier paramètre de fdopen est un descripteur de fichier ouvert, et mode indique la méthode d'ouverture String

, identique à fopen, tel que "w" ou "r".
int fileno(FILE *stream);

FILE *fdopen(int fd,const char *mode);
Copier après la connexion

filenoFonction, qui renvoie le descripteur de fichier correspondant au flux de fichier, a échoué Return -1.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment démarrer Apache Comment démarrer Apache Apr 13, 2025 pm 01:06 PM

Les étapes pour démarrer Apache sont les suivantes: Installez Apache (Commande: Sudo apt-get install Apache2 ou téléchargez-le à partir du site officiel) Start Apache (Linux: Sudo SystemCTL Démarrer Apache2; Windows: Cliquez avec le bouton droit sur le service "APACHE2.4" et SELECT ") Vérifiez si elle a été lancée (Linux: SUDO SYSTEMCTL STATURE APACHE2; (Facultatif, Linux: Sudo SystemCTL

Que faire si le port Apache80 est occupé Que faire si le port Apache80 est occupé Apr 13, 2025 pm 01:24 PM

Lorsque le port Apache 80 est occupé, la solution est la suivante: découvrez le processus qui occupe le port et fermez-le. Vérifiez les paramètres du pare-feu pour vous assurer qu'Apache n'est pas bloqué. Si la méthode ci-dessus ne fonctionne pas, veuillez reconfigurer Apache pour utiliser un port différent. Redémarrez le service Apache.

Comment redémarrer le serveur Apache Comment redémarrer le serveur Apache Apr 13, 2025 pm 01:12 PM

Pour redémarrer le serveur Apache, suivez ces étapes: Linux / MacOS: Exécutez Sudo SystemCTL Restart Apache2. Windows: Exécutez net stop apache2.4 puis net start apache2.4. Exécuter netstat -a | Findstr 80 pour vérifier l'état du serveur.

Comment apprendre Debian Syslog Comment apprendre Debian Syslog Apr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

Comment résoudre le problème qu'Apache ne peut pas être démarré Comment résoudre le problème qu'Apache ne peut pas être démarré Apr 13, 2025 pm 01:21 PM

Apache ne peut pas démarrer car les raisons suivantes peuvent être: Erreur de syntaxe du fichier de configuration. Conflit avec d'autres ports de demande. Problème d'autorisations. Hors de la mémoire. Traitement dans l'impasse. Échec du démon. Problèmes d'autorisations de Selinux. Problème de pare-feu. Conflit logiciel.

Internet fonctionne-t-il sur Linux? Internet fonctionne-t-il sur Linux? Apr 14, 2025 am 12:03 AM

Internet ne s'appuie pas sur un seul système d'exploitation, mais Linux joue un rôle important. Linux est largement utilisé dans les serveurs et les appareils réseau et est populaire pour sa stabilité, sa sécurité et son évolutivité.

Comment réparer la vulnérabilité Apache Comment réparer la vulnérabilité Apache Apr 13, 2025 pm 12:54 PM

Les étapes pour corriger la vulnérabilité Apache incluent: 1. Déterminez la version affectée; 2. Appliquer des mises à jour de sécurité; 3. Redémarrez Apache; 4. Vérifiez la correction; 5. Activer les fonctionnalités de sécurité.

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

See all articles