系统调用
UNIX/Linux系统绝大部分功能都是通过系统调用实现,比如:open/close…
UNIX/Linux把系统调用都封装成了C函数的形式,但他们并不是标准C的一部分。
一切皆文件
在UNIX/Linux系统下,几乎所有资源都是以文件形式提供了,所以在UNIX/Linux系统下一切皆文件,操作系统把它的服务、功能、设备抽象成简单的文件,提供一套简单统一的接口,这样程序就可以像访问磁盘上的文件一样访问串口、终端、打印机、网络等功能。
大多数情况下只需要open/read/write/ioctl/close就可以实现对各种设备的输入、输出、设置、控制等。UNIX/Linux下几乎任何对象都可以当作特殊类型的文件,可以以文件的形式访问。
文件相关系统调用
(1)open()
功能:打开文件
返回值:文件描述符
参数:
creat()
intcreat(constchar*pathname,intflags,mode_tmode);
功能:创建文件
pathname:文件的路径
flags:打开的权限
O_CREAT,文件不存在则创建
O_EXCL,如果文件存在,则创建失败
mode:设置文件的权限
read()/write()
#include<unistd.h>
ssize_tread(intfd,void*buf,size_tcount);
功能:从文件中读取数据到内存
fd:文件描述符,open函数的返回值
buf:数据的存储位置count:读取的字节数
返回值:成功读取到的字节数
ssize_twrite(intfd,constvoid*buf,size_tcount);
功能:把数据写入到文件
fd:文件描述符,open函数的返回值
buf:要写入的数据内存首地址
count:要写入的字节数
返回值:成功写入的字节数
注意:如果把结构体以文本形式写入到文件,需要先把结构体转换成字符串。
原文链接:https://blog.csdn.net/qq_42685292/article/details/97623327