c-由FILE*的内容表示的内容



我有这个程序

#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("%in", f);  // 1976385616
    printf("%in", *f);  // 1976385768
    int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
    printf("%in", sockfd);  // 4
    fclose(f);
    close(sockfd);
    int fd = open("/Users/user/a.cc", O_TRUNC | O_WRONLY, 0);
    printf("%in", (int) fd); // 3
    close(fd);
}

我知道34表示文件描述符,0、1、2分别是stdinstdoutstderr。显然fopen没有使用文件描述符。

FILE*的值代表什么?如果没有文件描述符,fopen如何处理?

FILE*的值代表什么?

它是指向FILE结构的指针,对于glibc,它的定义在这里。其中包括文件描述符。您可以使用POSIX fileno函数从FILE*中获取文件描述符。

有关更多详细信息,您可能希望了解文件描述符和标准I/O流的交互。

相关内容

  • 没有找到相关文章

最新更新