fclose会写入硬盘吗 linux_Linux 文件操作总结

文件是linux中的一个重要概念。在Linux中,一切(几乎一切)都是文件。简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作。

对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。

这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式下的文件操作。

博文的主要内容如下:

Linux 中的文件

文件访问-库函数

文件访问-系统调用

库函数

标准 I/O 库

/proc文件系统

1 Linux中的文件

1.1概念

按照普通的定义,文件不过是一堆数据,在往下说,就是存储器中的0101。。。而我们这里讨论的文件有了更广的定义。对于Linux中的文件,我的理解是:

Linux中的文件具有的特点是:可通过操作系统或者程序对外提供信息,也能对内输入信息,可以被创建,删除。

Linux中,文件有特别重要的意义,他们为操作系统和设备提供了一个简单而统一的接口。在Linux中,几乎一切都可以看做是文件 。

这就意味着,普通程序完全可以像使用文件(普通定义)那样使用磁盘文件、串行口、打印机和其他设备。

硬件设备在linux操作系统中也被表示为文件。例如,可以通过如下命令把cd-rom驱动器挂载为一个文件,

#mount -t iso9660 /dev/hdc /mnt/cdrom

#cd /mnt/rom

然后,就能像访问普通文件那样在cd-rom目录中漫游。

1.2操作

和操作一般意义上的文件一样,linux中对文件的操作只需要五个基本的函数:

open、close、read、write和ioctl

通过调用这几个函数就能对linux中的文件进行读、写等操作。不过,这种操作又分为系统调用和库函数调用。简单的说,系统调用是最直接的方式,

库函数调用最终也是通过系统调用实现的。可认为库函数调用是对系统调出于效率考虑而做出的优化。

库函数调用和系统调用的区别和联系请参看:linux系统调用和库函数调用的区别

我们用很少的函数就可以对文件和设备进行访问和控制。这些函数就是所谓的系统调用,由操作系统直接提供,他们是通向操作系统本身的接口。

操作系统的核心部分,既内核,其实就是一组设备驱动程序。这是一些对硬件进行控制的接口。

2 文件访问-系统调用

通过系统调用来访问文件是最直接的方式。系统调用函数直接作用于操作系统内核的设备驱动程序从而实现文件访问。

2.1 文件描述符

在系统中需要处理的文件(读、写操作)需要一个标识,以便在其它地方能识别出这个文件,于是就产生了文件描述符。文件描述符是一些小值整数,简单的说就是

一个文件ID用于在系统中唯一的标识文件。文件描述符的总数也就是系统可以打开文件的最多个数,这取决于系统的配置情况。

当开始运行程序时,也就是系统开始运行时,它一般会有三个已经打开的文件描述符。他们是:

0:标准输入

1:标准输出

2:标准错误

其它文件的文件描述符,在调用文件打开函数open时返回。这就是说,每个设备对应着一个文件描述符。文件描述符由操作系统分配,每次分配最小的。

2.2 write系统调用

write,就是把缓冲区的数据写入文件中。注意,这里的文件时广泛意义的文件,比如写入磁盘、写入打印机等等。

Linux 中write()的函数原型:

size_t write(int

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值