135 votes

Quelle est la différence entre un descripteur de fichier et le pointeur de fichier?

Je veux savoir la différence entre un descripteur de fichier et de pointeur de fichier.

Aussi, dans ce scénario serait d'utiliser l'un plutôt que l'autre?

167voto

unwind Points 181987

Un descripteur de fichier est un faible niveau entier "poignée" utilisé pour identifier un fichier ouvert (ou une douille, ou quoi que ce soit) au niveau du noyau, Linux et autres systèmes Unix.

Vous passez "nu" descripteurs de fichiers pour Unix appels, comme read(), write() et ainsi de suite.

Un FILE pointeur est une bibliothèque C standard niveau de la construction, utilisé pour représenter un fichier. L' FILE encapsule le descripteur de fichier, et ajoute de la mise en mémoire tampon et d'autres fonctionnalités pour rendre I/O plus facile.

Vous passez FILE des pointeurs vers les fonctions C standard tels que fread() et fwrite().

71voto

Ben Points 3042

Une mémoire tampon (FILE *) et l'autre ne l'est pas. Dans la pratique, vous souhaitez utiliser FILE * presque toujours, quand vous lisez à partir d'un "vrai" fichier (ie. sur la route), sauf si vous savez ce que vous faites ou que votre fichier est en fait un socket ou alors..

Vous pouvez obtenir le descripteur de fichier de l' FILE * l'aide fileno() et vous pouvez ouvrir un tampon FILE * à partir d'un descripteur de fichier à l'aide de fdopen()

26voto

Martin Wickman Points 9628

Un descripteur de fichier est juste un entier qui vous obtenez à partir de la Posix' open()appel. En utilisant le standard de C fopen() , vous obtenez un FILE struct dos. L' FILE struct contient la ce descripteur de fichier, entre autres choses, telles que la fin de fichier et l'indicateur d'erreur, flux de position etc.

Donc à l'aide d' fopen() vous donne une certaine quantité d'abstraction par rapport à l' open(). En général, vous devriez être en utilisant fopen() depuis que est plus portable et vous pouvez utiliser tous les autres types de fonctions en C qui utilise l' FILE struct, ie fprintf() et de la famille.

Il n'y a pas de problèmes de performances à l'aide de ou.

12voto

Akshay Patil Points 482

Souhaitez ajouter des points qui pourraient être utiles.

À PROPOS de FILE *

  1. ne peut pas être utilisé pour la communication interprocessus(IPC).
  2. l'utiliser quand vous en avez besoin genral but tampon I/O.(printf,frpintf,snprintf,scanf)
  3. Je l'utilise de nombreuses fois pour les journaux de débogage. exemple,

                 FILE *fp;
                 fp = fopen("debug.txt","a");
                 fprintf(fp,"I have reached till this point");
                 fclose(fp);
    

À PROPOS de FILE DESCRIPTOR

  1. Il est généralement utilisée pour l'IPC.

  2. Donne un contrôle de bas niveau à des fichiers sur les systèmes *nix.(les périphériques,fichiers,sockets,etc), donc plus puissant que l' FILE *.

1voto

Pavunkumar Points 1945

Les appels système sont principalement à l'aide du descripteur de fichier, par exemple read et write. Fonction de la bibliothèque utilisation du fichier des pointeurs ( printf , scanf). Mais, les fonctions de la bibliothèque sont en interne par les appels système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X