Descripteur de fichier
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Les descripteurs de fichier pour l'entrée, la sortie, et les erreurs
Les descripteurs de fichier pour l'entrée, la sortie, et les erreurs

En informatique, un descripteur de fichier est une clé abstraite pour accéder à un fichier. On utilise généralement ce terme pour les systèmes d'exploitation POSIX (POSIX est le nom d'une famille de standards définie depuis 1988 par l'IEEE et formellement désignée IEEE 1003. Ces standards ont émergé d'un projet de...). Dans la terminologie de Microsoft Windows (Windows (littéralement « Fenêtres » en anglais) est une gamme de systèmes d’exploitation produite par Microsoft, principalement...) et dans le contexte (Le contexte d'un évènement inclut les circonstances et conditions qui l'entourent; le contexte d'un mot, d'une phrase ou d'un texte inclut les mots qui l'entourent. Le concept de contexte issu...) de la bibliothèque stdio.h, on préfère le terme filehandle, bien que ce soit techniquement un objet (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise, et qui peut être désigné par une...) différent. Voir ci-dessous.

Dans POSIX, un descripteur de fichier (En informatique, un descripteur de fichier est une clé abstraite pour accéder à un fichier. On utilise généralement ce terme pour les systèmes d'exploitation POSIX....) est un entier, et plus spécifiquement dans le langage C, un entier de type int. Il y a trois descripteurs de fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par...) POSIX standard pour tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) processus qui n'est pas un démon :

Integer value Name
0 Standard Input (stdin)
1 Standard Output (stdout)
2 Standard Error (stderr)

Généralement, un descripteur de fichier est un index d'une entrée dans le noyau-résident

 
 data structure containing the details of all open files. 
 

Dans POSIX, on appelle cette structure de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) une table de descripteurs de fichier. Et chaque processus a sa propre table de descripteurs de fichier. L'application utilisateur passe la clé abstraite au noyau par un appel système (En informatique, un appel système est une fonction fournie par le noyau d'un système d'exploitation et utilisée par les programmes s'exécutant dans l'espace utilisateur (en d'autres termes,...) et le noyau accédera le fichier au nom de l'application grâce à cette clé. L'application ne peut pas lire ou écrire directement la table des descripteurs de fichier.

Dans un système Unix, les descripteurs de fichier peuvent désigner des fichier, des répertoires, des devices bloc ou caractère (souvent appelés fichiers spéciaux), des pipes nommés ou des pipes anonymes.

Le filehandle FILE * de la bibliothèque C d'entrées/sorties standard est techniquement un pointeur vers une structure de données gérées par les routines de cette bibliothèque. Sur les systèmes Unix, l'une de ces structures inclut un descripteur de fichier pour l'objet en question Puisque le nom de file handle se réfère à cette couche additionnelle, il n'est pas interchangeable avec celui de descripteur de fichier.

Pour compliquer encore la terminologie, Microsoft (Microsoft Corporation (NASDAQ : MSFT) est une multinationale américaine de solutions informatiques, fondée par Bill Gates et Paul Allen, dont le revenu...) Windows (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées aux machines compatibles PC. C'est le remplaçant de...) utilise aussi le terme file handle pour désigner la construction de bas niveau, c.à.d les descripteurs de fichier POSIX. Les bibliothèques C Microsoft fournissent aussi des fonctions de compatibilité qui "enscapsulent" ces handles natifs pour supporter des conventions à la POSIX de descripteurs de fichier comme décrits ci-dessus.

Opérations sur les descripteurs de fichier

Un Unix moderne fournit typiquement les opérations suivantes sur les descripteurs de fichier.

Appels système de création de descripteurs de fichier

  • open(), open64(), creat(), creat64()
  • socket()
  • socketpair()
  • pipe()

Opérations sur un seul descripteur de fichier

  • read(), write()
  • recv(), send()
  • recvmsg(), sendmsg() (permet d'envoyer des descripteur de fichier à un autre processus)
  • sendfile()
  • lseek(), lseek64()
  • fstat(), fstat64()
  • fchmod()
  • fchown()

Opérations sur de multiples descripteurs de fichier

  • select(), pselect()
  • poll()

Opérations sur la table des descripteurs de fichier

  • close()
  • dup()
  • dup2()
  • fcntl (F_DUPFD)
  • fcntl (F_GETFD and F_SETFD)

Opérations qui modifient l'état du processus

  • fchdir(): sets the process's current working directory based on a directory file descriptor
  • mmap(): projette des portions d'un fichier dans l'espace d'adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de s'adresser à une autre parmi un ensemble d'entités. Pour qu'il n'y ait pas d'ambiguïté, chaque adresse doit correspondre à une unique entité,...) du processus

Verrouillage de fichier

  • flock()
  • fcntl (F_GETLK, F_SETLK and F_SETLKW)
  • lockf()

Sockets

    • connect()
    • bind()
    • listen()
    • accept(): crée un noveau descripteur de fichier pour une connexion entrante
    • getsockname()
    • getpeername()
    • getsockopt(), setsockopt()
    • shutdown(): ferme un ou les deux bouts d'une connexion full duplex

Divers

  • ioctl(): une large collection d'opérations diverse sur un seul descripteur de fichier, souvent associé avec un device

Descripteurs de fichier et capacité

Les descripteurs de fichier Unix sont des capacités. Il peuvent être passés entre des processus à des sockets de domaine Unix avec l'appel système sendmsg().

Une table de descripteurs de fichier Unix est un exemple de C-list.

Page générée en 0.019 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique