Maison > Article > Opération et maintenance > Introduction détaillée aux descripteurs de fichiers et aux pointeurs de fichiers sous Linux
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
|
(stdio.h) | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Entrée standard | STDIN_FILE NON |
stdin | ||||||||||||||||
1 | Sortie standard | STDOUT_FILENO | stdout | ||||||||||||||||
2 | Erreur standard | STDERR_FILENO | stderr |
Opérations liées aux descripteurs de fichiers :
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. . |
功能 | 操作 |
---|---|
文件描述符生成 | 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
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");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);
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!