I/O编程

一切皆文

文件的概念

 Linux 中,有一句经典的话叫做:一切皆文件。这句话是站在内核的角度说的,因为 在内核中所有的设备 (除了网络接口) 都一律使用 Linux 独有的虚拟文件系统 (VFS) 来管 理。这样做的最终目,是将各种不同的设备用“文件”这个概念加以封装和屏蔽,简化应 用层编程的难度。文件,是 Linux 系统最重要的两个抽象概念之一 (另一个是进程) 。

七类文件

1,普通文件 (regular) :存在于外部存储器中,用于存储普通数据。

2, 目录文件 (directory) :用于存放目录项,是文件系统管理的重要文件类型。 

3,管道文件 (pipe) :一种用于进程间通信的特殊文件,也称为命名管道 FIFO

4,套接字文件 (socket) :一种用于网络间通信的特殊文件。

5,链接文 (link) :用于间接访问另外一个目标文件,相当于 Windows 快捷方式。

 6,字符设备文件 (character) :字符设备在应用层的访问接口。

7,块设备文件 (block) :块设备在应用层的访问接口

如下所示

注意到,每个文件信息的最左边一栏,是各种文件类型的缩写,从上到下 是:

b (block) 块设备文件

c (character) 字符设备文件

d (directory) 目录文

l (link) 链接文件 (软链接)

p (pipe) 管道文件 (命名管道)

- (regular) 普通文件

s (socket) 套接字文件 (Unix 域/本地域套接字) 

关于man使用

man1 shell命令

man2系统调用函数

man3标准c库函数

ls -l 文件名 查看若是可执行文件直接     ./文件命运行

系统 IO 

要对一个文件进行操作,先必须“打开”他,打开两个字之所以加上双引号,是因为 这是代码级别的含义并非图形界面上所理解的“双击打开”一个文件,代码中打开一个文 件意味着获得了这个文件的访问句柄 (即 file descriptor,文件描述符 fd) ,同时规定了之 后访问这个文件的限制条件。

我们使以下系统 IO 函数来打开一个文件:

打开一个指定的文件并获得文件描述符,或者创建一个新文件

文件

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

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

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

参数

pathname:即将要打开的文件

flags

O_RDONLY:只读方式打开文件

这三个参数互斥

O_WRONLY:只写方式打开文件

O_RDWR:读写方式打开文件

O_CREAT:如果文件不存在,则创建该文件。

O_EXCL:如果使用 O_CREAT 选项且文件存在,则返回错误消息。

O_NOCTTY:如果文件为终端,那么终端不可以作为调用 open()系统调 用的那个进程的控制终端。

O_TRUNC:如文件已经存在,则删除文件中原有数据。

O_APPEND:以追加方式打开文件。

mode

如果文件被建,指定其权限为 mode  (八进制表示法)

回值

成功

大于0 的整数 (即文件描述符)

- 1

 三个参数互斥,表示只能用三个中的一个。

定义函数时 int 函数名

表示返回值为int 型

文件描述符:通过返回值赋给文件标签正确的文件一般从3开始赋值

 其中键盘输入占用了0号位,显示屏输入输出各占用一个符号位。

编程时判断条件可这样写   if(常量==变量名)这样写可以防止常规敲代码if(变量名==常量)时遇到符号=少打出现的报错。

perror()用于打印报错信息

主函数传参

int main(int argc ,char **argv)    argc 为传参的数量  argv为变量

主函数传参

strlen 和sizeof 的区别   strlen 计算buf实际的字节数   sizeof定义多少算出来多少

diff 文件名 文件名  用于比较两文件是否一样 ,若不一样输出不一样的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值