I have this program
#include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <fcntl.h> int main(void) { FILE* f = fopen("/Users/user/a.cc", "rb"); printf("%i\n", f); // 1976385616 printf("%i\n", *f); // 1976385768 int sockfd = socket(AF_UNIX, SOCK_STREAM, 0); printf("%i\n", sockfd); // 4 fclose(f); close(sockfd); int fd = open("/Users/user/a.cc", O_TRUNC | O_WRONLY, 0); printf("%i\n", (int) fd); // 3 close(fd); }
I know that 3 and 4 represent file descriptors with 0, 1, 2 equal to stdin , stdout and stderr respectively. Obviously fopen does not use a file descriptor.
What is the meaning of FILE* ? How fopen , if not, with file descriptors?
c linux unix file-descriptor
hgiesel Apr 08 '16 at 1:56 p.m. 2016-04-08 13:56
source share