问题
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?
回答1:
fp is a FILE pointer
File pointer:
- It is high level interface
- Passed to fread() and fwrite() functions
- Includes buffering,error indication and EOF detection,etc.
- Provides higher portability and efficiency.
File descriptor:
- Low/Kernel level handler
- passe to read() and write() of UNIX System Calls
- Doesn't include buffering and such features
- Less portable and lacks efficiency
based on this link
回答2:
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.
回答3:
FILE
is a struct that contains information about the file, including the file descriptor.
来源:https://stackoverflow.com/questions/8191905/what-is-difference-between-file-descriptor-and-file-pointer