【C语言】【unix c】库函数和系统调用的关系

110 篇文章 1 订阅
五、库函数和系统调用的关系
    以文件操作为例
    fopen fclose fputc fgetc 库函数
    open   close  read write 系统调用

    FILE 是结构体类型的别名
    flags fileno mode

    fopen(3)首先调用open2)打开一个文件,将open2)的返回值记录在FILE结构体中的_fileno成员。分配一块内存,这快空间叫文件内容缓冲区然后FILE中的一些指针成员指向这快内存,最后返回FILE类型的对象。

    fputc(3)调用该函数时,向文件内容缓冲区写数据,如果缓冲区没有空间接纳这个字符,调用write(2)将缓冲区的数据写入到文件中,然后再将fputc中的数据写入到缓冲区,如果缓冲有空间接纳数据,直接将数据写入到缓冲区即可

    fgetc(3)调用该函数的时候,首先从缓冲区读取数据,如果缓冲区有数据就立即返回读取到的字节,如果缓冲区没有数据,就立即调用read2),从文件中读取数据到缓冲区,然后fgetc获取数据

    fclose(3)首先刷新缓冲区,将缓冲区内容写入到文件中,然后调用close2)再关闭文件描述符,释放缓冲区

    fflush(3)可以刷新缓冲区

    库函数操作文件称为缓冲文件
    系统调用操作文件称为非缓冲文件

    库函数可以跨平台
    系统调用不能跨平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘星燎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值