2014 08 18
1:记得随手关门;
2: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系统运行情况的命令)
目录也是文件
进程被启动的目录成为工作目录print working directory
起始目录也称home目录
目录操作函数有 opendir readdir closedir
文件描述符:当打开一个文件时,内核就会分配给你一个非负整数,通过这个整数便可读写文件。
标准输入 文件描述为0 STDIN_FILENO
标准输出 文件描述为1 STDOUT_FILENO(每一次在内核组织好,一次性送出来)
标准错误输出 文件描述符为2 STDERR_FILENO(每一次都进内核,以最快速度反馈给用户)
不带缓冲的I/O,直接去找系统调用,速度快。(open read write)
带缓冲的I/O,在系统调用前采用一定的策略,速度慢,比不带缓冲的I/O安 全。
(fopen fread fwrite)
一般Linux函数出错时会返回一个负值。附加信息会放在errno中。
<errno.h>中定义了errno变量以及附加信息的常量。
errno只有在函数出错时才有意义,并且不可能为0
可以通过strerror和perror打印出当前errno对应的文字描述信息。
signal是通知进程发生某种事件的技术。
每种信号都有系统默认处理方式,程序员也可以提供专门的函数处理程序感兴趣的信号。
系统调用:操作系统提供给应用使用的接口,通过这些接口应用程序可以访问内核的服务。
文件时间戳
文件最后访问时间 ls -lu
文件修改时间 ls -l
文件I/O:open
inode修改时间 ls -lc
文件I/O:open
文件I/O:creat
文件I/O:close
文件I/O:lseek
文件I/O:read
文件I/O:write
Linux I/O实现
Linux I/O原子操作:pread , pwrite原子读写操作。相当于先把文件偏移量定位到offset,然后在进行读写。这都是一步完成,不存在竞争问题。
Linux I/O:dup/dup2用来复制一个已经存在的文件描述符
Linux I/O:int fsync(int filedes) 把指定文件的数据和属性写入到磁盘。
Linux I/O:fcntl可以改变已经打开的描述符。
文件目录操作:access
文件操作函数: truncate
1:记得随手关门;
2: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系统运行情况的命令)
目录也是文件
进程被启动的目录成为工作目录print working directory
起始目录也称home目录
目录操作函数有 opendir readdir closedir
文件描述符:当打开一个文件时,内核就会分配给你一个非负整数,通过这个整数便可读写文件。
标准输入 文件描述为0 STDIN_FILENO
标准输出 文件描述为1 STDOUT_FILENO(每一次在内核组织好,一次性送出来)
标准错误输出 文件描述符为2 STDERR_FILENO(每一次都进内核,以最快速度反馈给用户)
不带缓冲的I/O,直接去找系统调用,速度快。(open read write)
带缓冲的I/O,在系统调用前采用一定的策略,速度慢,比不带缓冲的I/O安 全。
(fopen fread fwrite)
一般Linux函数出错时会返回一个负值。附加信息会放在errno中。
<errno.h>中定义了errno变量以及附加信息的常量。
errno只有在函数出错时才有意义,并且不可能为0
可以通过strerror和perror打印出当前errno对应的文字描述信息。
signal是通知进程发生某种事件的技术。
每种信号都有系统默认处理方式,程序员也可以提供专门的函数处理程序感兴趣的信号。
系统调用:操作系统提供给应用使用的接口,通过这些接口应用程序可以访问内核的服务。
文件时间戳
文件最后访问时间 ls -lu
文件修改时间 ls -l
文件I/O:open
inode修改时间 ls -lc
文件I/O:open
文件I/O:creat
文件I/O:close
文件I/O:lseek
文件I/O:read
文件I/O:write
Linux I/O实现
Linux I/O原子操作:pread , pwrite原子读写操作。相当于先把文件偏移量定位到offset,然后在进行读写。这都是一步完成,不存在竞争问题。
Linux I/O:dup/dup2用来复制一个已经存在的文件描述符
Linux I/O:int fsync(int filedes) 把指定文件的数据和属性写入到磁盘。
Linux I/O:fcntl可以改变已经打开的描述符。
文件目录操作:access
文件操作函数: truncate