Linux文件IO(二) -- 关闭文件close函数详解

目录

1.简介

2.函数原型以及头文件

3.函数的功能、参数、返回值

3.1函数功能

3.2函数参数

3.3函数返回值

4.代码

5.运行结果和分析

1.简介

        在Linux系统中,close() 函数用于关闭一个已打开的文件描述符(File Descriptor),释放相关资源。它是Unix/Linux文件I/O操作的核心函数之一,属于POSIX标准接口。

2.函数原型以及头文件

#include 

int close(int fd);

3.函数的功能、参数、返回值

3.1函数功能

       释放文件描述符。关闭后,fd 不再指向任何文件,可以被后续的 open() 重复使用。

3.2函数参数

       fd :需要关闭的文件描述符,通常是 open(), creat(), pipe(), socket() 等函数返回的整数值。

3.3函数返回值

       成功:返回 0。
       失败:返回 -1,并设置全局变量 errno 以指示具体错误。

4.代码

#include 
#include 
#include 


int main()
{
    /*  1.打开一个文件  */
    int fd1 = open("data1.txt", O_RDWR | O_CREAT, 0777);
    if(fd1 == -1)
    {
        perror("open failed");  // 打印错误信息,如 "open failed: No such file or directory"
        return -1;
    }
    
    /*  2.打印文件描述符数值    */
    printf("fd1 = %d\n", fd1);

    /*  3.关闭文件  */
    close(fd1);

    /*  4.打开另外一个文件  */
    int fd2 = open("data2.txt", O_RDWR | O_CREAT, 0777);
    if(fd2 == -1)
    {
        perror("open failed");  // 打印错误信息,如 "open failed: No such file or directory"
        return -1;
    }
    printf("fd2 = %d\n", fd2);

    /*  5.再打开另外一个文件  */
    int fd3 = open("data3.txt", O_RDWR | O_CREAT, 0777);
    if(fd3 == -1)
    {
        perror("open failed");  // 打印错误信息,如 "open failed: No such file or directory"
        return -1;
    }
    printf("fd3 = %d\n", fd3);

    close(fd2);
    close(fd3);

    return 0;
}

5.运行结果和分析

       首先,程序在运行的时候默认打开三个文件流,分别是stdin、stdout和stderr,文件描述符也分别对应0,1,2。所以你再打开的第一个文件的文件描述的的数值是3。

       打开了fd1之后,文件描述符的数值为3,然后进行关闭。再打开fd2,发现数值还为3,说明fd1关闭之后,这个数值3还是可以被重复使用的,只是操作的文件变了。再打开一个文件,fd3为4,自增长了一个数值。

你可能感兴趣的:(嵌入式LINUX应用开发,linux,运维,服务器)