linux文件io编程ppt,第二讲 Linux文件IO编程.ppt

第二讲 Linux文件IO编程

Linux文件I/O编程 李杰聪 Linux编程基础:man 1.一般命令(shell命令) 2.系统调用(open write等直接陷入内核的函数) 3.子函数(C函数库等不直接陷入内核的函数) 4.特殊文件(/dev/zero等linux系统中有特殊用途的文件) 5.文件格式(linux系统的配置文件格式 host.conf) 6.游戏 7.宏和地方传统定义(本地配置) 8.维护命令(tcpdump等用来观察linux系统运行情况的命令) Linux编程基础 目录也是文件 进程被启动的目录成为工作目录print working directory 起始目录也称home目录 目录操作函数有 opendir readdir closedir 文件描述符:当打开一个文件时,内核就会分配给你一个非负整数,通过这个整数便可读写文件。 Linux编程基础 标准输入 文件描述为0 STDIN_FILENO 标准输出 文件描述为1 STDOUT_FILENO(每一次在内核组织好,一次性送出来) 标准错误输出 文件描述符为2 STDERR_FILENO(每一次都进内核,以最快速度反馈给用户) 不带缓冲的I/O,直接去找系统调用,速度快。(open read write) 带缓冲的I/O,在系统调用前采用一定的策略,速度慢,比不带缓冲的I/O安全。 (fopen fread fwrite) 缓冲和非缓冲I/O Linux出错处理 一般Linux函数出错时会返回一个负值。附加信息会放在errno中。 中定义了errno变量以及附加信息的常量。 errno只有在函数出错时才有意义,并且不可能为0 可以通过strerror和perror打印出当前errno对应的文字描述信息。 Perror例子: int main() { FILE *fp; if((fp=fopen("1.txt","r")) == NULL) { perror("fopen"); exit(0); } perror("fopen"); } fopen: No such file or directory fopen: Success Linux编程基础 signal是通知进程发生某种事件的技术。 每种信号都有系统默认处理方式,程序员也可以提供专门的函数处理程序感兴趣的信号。 系统调用:操作系统提供给应用使用的接口,通过这些接口应用程序可以访问内核的服务。 文件时间戳 文件最后访问时间 ls -lu 文件修改时间 ls -l inode修改时间 ls -lc 文件I/O:open open函数:调用它可以打开或者创建一个文件。 #include int open(const char *pathname, int flags) int open(const char *pathname, int flags, mode_t mode)返回一个整数,它就是一个数据结构,包括文件名,文件指针,文件读写权限等,以后就可以拿它来操作文件。 如果失败,返回值为-1 参数解析: pathname是要打开或者创建的文件名(路径)。 flags 文件打开时候的选项(当多个选项时,采用|或者&连接) O_RDONLY 以只读方式打开文件。 O_WRONLY 以只写方式打开文件。 O_RDWR 以读和写方式打开文件。 这三个选项是必选其一的! 文件I/O:open flags 可选选项: O_APPEND 以追加方式打开文件,每次写时都写在文件末尾。 O_CREAT 如果文件不存在,则创建一个,存在则打开它。 O_EXCL 与O_CREAT一起使用时,如果文件已经存在则返回出错。 O_TRUNC 以只写或读写方式打开时,把文件截断为0(清空) O_DSYNC 每次写时,等待数据写到磁盘上。 O_RSYNC 每次读时,等待相同部分先写到磁盘上。 O_SYNC 每次写时,等到数据写到磁盘上并接更新文件属性。 SYNC选项都会影响降低性能,有时候也取决于文件系统的实现。man sync 文件I/O:open mode 只有创建文件时才使用此参数,指定文件的访问权限。模式有(要加头文件:myhead.h,或直接用数字表示) S_IRWX[UGO] 可读 可写 可执行 eg:S_IRWXU表示用户当前的权限为RWX S_IR[USR GRP OTH] 可读 S_IW[USR GRP OTH] 可写 S_IX[USR GRP OTH] 可执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值