Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is difference between file descriptor and file pointer? [duplicate]

Possible Duplicate:
What's the difference between a file descriptor and file pointer?

If I open file like this:

FILE *fp = fopen("mr32.txr","r");

then fp is file pointer or file descriptor? What is difference between them?

like image 878
Jeegar Patel Avatar asked Nov 19 '11 04:11

Jeegar Patel


2 Answers

fp is a FILE pointer

File pointer:

  1. It is high level interface
  2. Passed to fread() and fwrite() functions
  3. Includes buffering,error indication and EOF detection,etc.
  4. Provides higher portability and efficiency.

File descriptor:

  1. Low/Kernel level handler
  2. passe to read() and write() of UNIX System Calls
  3. Doesn't include buffering and such features
  4. Less portable and lacks efficiency

based on this link

like image 115
Aditya Naidu Avatar answered Oct 03 '22 15:10

Aditya Naidu


It's a pointer to a FILE structure, if that's what you're asking. A file descriptor is an integer. The FILE structure and its related APIs are part of the C standard. File descriptors and their related functions are not. In practice you can use either set of functions interchangeably, though there are some notable differences in default behaviour here and there. You can read the man pages to figure out which functions take which sort of parameters. On systems that have file descriptors, you can usually use the fdopen(3) function to get a FILE structure from an open file descriptor and fileno(3) to go the other way.

like image 39
Carl Norum Avatar answered Oct 03 '22 13:10

Carl Norum