Linux文件系统相关操作

本文介绍了C语言中文件输入输出的基本操作,包括通过C标准库fopen函数打开文件进行写入,以及通过系统调用open函数实现文件的创建与写入。详细解释了两种方式下的文件描述符和相关API的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C文件I/O

在C语言中,默认会打开三个输入输出流,分别是stdin,stdout,stderr,不难发现,这三个流的类型都是FILE*,通过fopen得到的返回值为文件指针,指向打开的文件

#include <stdio.h>
#include <string.h>

int main(){

    FILE* fp = fopen("myfile","w");
    if(fp == NULL){
        perror("fopen error\n");
    }

    const char* msg = "Hello fp\n";
    int count = 5;
    while(count--){
        fwrite(msg,strlen(msg),1,fp);
    }
    fclose(fp);

    return 0;
}

系统文件I/O

操作文件,当然不止有上述的C接口或者其他语言的一些接口,我们还可以通过系统所暴露的接口来进行文件访问,例如

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>

int main(){
    int fd = open("myfile",O_WRONLY|O_CREAT,0644);
    if(fd < 0 ){
        perror("open");
        return 1;
    }

    int count = 5;
    const char* msg = "hello fd\n";
    int len = strlen(msg);

    while (count--){
        write(fd,msg,len);
    }
    close(fd);
    return 0;
}

open函数:int open(const char* pathname , int flags);

                int open(const char* pathname, int flags, mode_t mode);

pathname:要打开或创建的目标文件

flags:   打开文件时,可以传入多个参数选项,用一个或多个常量进行“或”运算,构成了flag

参数:

        O_RDONLY:只读打开

        O_WRONLY:只写打开

        O_RDWR    :读写打开

                          上面的三个变量必须指定一个且只能指定其中一个

        O_CREAT   :若文件不存在,则创建它。需要使用mode选项,来指明文件的访问权限

        O_APPEND :追加写文件

返回值:

        成功:返回的事新打开的文件描述符

        失败:返回-1;

mode_t:设置权限

open函数具体使用哪一个和应用场景有关,如果目标文件不存在,需要open创建,则第三个参数表示创建函数的默认权限,否则,使用两个参数的open。

文件描述符fd

了解了open函数之后,又引出了一个新的概念,文件描述符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值