Question

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?

Was it helpful?

Solution

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

OTHER TIPS

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.

FILE is a struct that contains information about the file, including the file descriptor.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top