文件类型 | r读read | |||
- | 普通文件 | 文本文件 cat命令可查看 | 文本文件 cat命令可查看 | |
l | 链接文件 | 硬链接文件和符号链接文件;指针实现不同文件系统之间建立一种链接关系 |
| |
c | 字符设备文件 | 设备文件 | 设备文件 | |
b | 块设备文件 | |||
p | 管道文件 | Linux进程间通信。匿名管道和命名管道 | ||
s | 套接口文件 | socket不同近算计的进程间的通信(套接字) | ||
d | 目录文件 | 系统进行修改 | 系统进行修改 | |
文件重定向 | 0标准输入,默认键盘可其他 | 1标准输出默认屏幕可文件;2标准出错,默认屏幕可文件 | ||
重定向标准输出 | ||||
| command > filename | 把标准输出重定向到filename文件中 | ls -l > file | |
command >> filename | 把标准输出重定向到filename文件中,方式是追加在现有内容后面 | |||
command 1 filename | 把标准输出重定向到一个文件中 | |||
> myfile | 创建一个长度为0的空文件 | |||
重定向标准输入 | ||||
command < filename | 以filename文件的内容作为command命令的标准输入 | cat < from > to | ||
command < file1 > file2 | 一file1文件的内容作为command命令的标准输入,并以file2文件作为命令执行结果的标准输出 | |||
command << delimiter | 从标准素如中读入,直至遇到delimiter分界符 | |||
重定向标准出错 | ||||
command 2> filename | 把标准出错重定向到filename中 | |||
command 2>> filename | 把标准出错重定向追加到文件中 | |||
文件创建打开关闭 | //只有含‘写’的不存在的文件会新建,其他会报错 | |||
#include<sys/types.h> | int open(const char *pathName,int flags) | |||
返回-1出错,成功返回文件描述符fd | int open(const char *pathName,int flags,mode_t mode) | 地址,文件打开方式,指定创建文件权限 | ||
#include<sys/types.h> | int creat(const char*pathName,mode_t mode) | creat->close->open | ||
返回-1出错 | 等效open(pathName,O_RDWR|O_CREAT|O_TRUNC,mode) | |||
#include<unistd.h> | int close(int fd); | fd需要关闭的文件的描述符 | ||
成功返回0,出错返回-1 | ||||
文件定位 | #include<sys/types/h> | off_t lseek(int fd,off_t offset,int whence) | fd文件描述符;offset偏移量字节数;whence偏移计算起始位置 | |
出错-1,否则文件偏移量 | whence :SEEK_SET文件开始处,SEEK_CUR当前位置,SEEK_END文件结尾 | |||
文件读写 | #include<unistd.h> | ssize_t read(int fd,void *buf,size_t count) | fd文件描述符;buf指针缓冲区;count要读取的字节数 | |
出错-1,读到文件尾返回0 | ||||
#include<unistd.h> | ssize_t write(int fd,void *buf,size_t count) | fd文件描述符;buf指针缓冲区;count要写入取的字节数 | ||
出错-1,否则返回成功写入字节数 | ||||
改变文件访问权限 | #include<sys/types.h> | int chmod(const chat *pathName,mode_t mode) | ||
出错-1,成功0 | int fchmod(int fd,mode_t mode) | 对已打开进行操作 | ||
改变文件所有者 | #include<sys/types/h> | int chown(const char*pathName,uid_t owner,gid_t group) | owner所有者标识符,group表四组标识号 | |
int fchown(int fd,uid_t owner,gid_t group) | 已打开 | |||
出错-1成功0 | int lchown(const char*pathname,uid_t owner ,gid_t group) | 针对符号链接文件爱你 | ||
重命名 | #include<stdio.h> | int rename(const char*oldname,const char*newname) | newname已存在删除 | |
修改文件长度 | #include<sys/types/h> | int truncate(const char *pathName,off_t len) | ||
出错-1成功0 | int truncate(int fd,off_t len) | |||
其他 | #include<sys/types.h> | int stat(const char*pathName,strut stat*sbuf) | ||
int fstat(int fd,stuct stat*sbuf) | ||||
成功返回0,出错返回-1 | int lstat(const char*pathName,struct stat*sbuf) | |||
UNIXLinux常见基本系统数据类型 | 类型 说明 | struct stat { | ||
caddr_t 核心地址 | mode_t st_mode; //文件对应的模式,文件,目录等 | |||
clock_t 时钟滴答计数器(进程时间) | ino_t st_ino; //inode节点号 | |||
comp_t 压缩的时钟滴答 | dev_t st_dev; //设备号码 | |||
dev_t 设备号 | dev_t st_rdev; //特殊设备号码 | |||
fd_set 文件描述符集 | nlink_t st_nlink; //文件的连接数 | |||
fpos_t 文件位置 | uid_t st_uid; //文件所有者 | |||
gid_t 数值组ID | gid_t st_gid; //文件所有者对应的组 | |||
ino_t i节点编号 | off_t st_size; //普通文件,对应的文件字节数 | |||
mode_t 文件类型,文件创建模式 | time_t st_atime; //文件最后被访问的时间 | |||
nlink_t 目录项的链接计数 | time_t st_mtime; //文件内容最后被修改的时间 | |||
off_t 文件大小和偏移量 | time_t st_ctime; //文件状态改变时间 | |||
pid_t 进程ID和进程组ID | blksize_t st_blksize; //文件内容对应的块大小 | |||
ptrdiff_t 两个指针相减的结果 | blkcnt_t st_blocks; //伟建内容对应的块数量 | |||
rlim_t 资源限制 | }; | |||
sig_atomic_t 能原子的访问的数据类型 | ||||
sigset_t 信号集 | ||||
size_t 对象,大小,不带符号 | ||||
ssize_t 返回字节计数的函数, 带符号的 | ||||
time_t 日历时间的秒计数器 | ||||
uid_t 数值用户ID | ||||
wchar_t 能表示所有不同的字符码 | ||||
复制已打开文件描述符 | #include<unistd.h> | int dup(int fd) | ||
出错返回-1 | int dup2(int fd,int fd2) | |||
改变已打开文件性质 | #include<sys/types.h> | int fcnt1(int fd,int cmd) | ||
出错返回-1 | int fcnt1(int fd,int cmd,long arg) | |||
同步命令 | #include<unistd.h> | void sync(void) | 块缓存排入写队列,系统进程(update)30s条用一次sync。定期刷新内核块缓存 | |
成功返回0,出错返回-1 | int fsync(int fd) | 引用单个文件,可用与数据库应用软件,确保修改过的块立即写到磁盘上 | ||
目录文件操作 | #include<sys/types/h> | int mkdir(const char*pathName,mode_t mode) | 创建空目录(至少设置一个执行许可位) | |
成功返回0,出错返回-1 | ||||
#include<unistd.h> | int rmdir(const char*pathName) | 删除空目录(必须空才能删除) | ||
成功返回0,出错返回-1 | ||||
#include<sys/types.h> | DIR*opendir(const chat*pathName) | 打开目录 | ||
#include<sys/types.h> | int closedir(DIR*dp) | 关闭目录 | ||
#include<sys/types.h> | struct dirent*readdir(DIR*dp) | 目录读取 | ||
#include<unistd.h> | int chdir(const char*NewpathName) | |||
成功返回0,出错返回-1 | int fchdir(int Newfd) | 改变当前工作路径 | ||
#include<unistd.h> | char *getcwd(char *buf,size_t size) | 获取当前工作路径,缓存长度size | ||
链接文件操作 | #include<unistd.h> | int link(const char*pathName1,const char*pathName2) | 创建新目录项pathName2(必须不存在),引用现存文件pathName2 | 硬链接(同一文件系统,超级用户 |
#include<unistd.h> | int unlink(const char*pathName) | 删除目录项 | ||
#include<unistd.h> | int symlink(const char*actualPath,const char*symPath) | 创建一个指向actual的新目录项sym | 符号链接(可不同文件系统,任意用户 | |
#include<unistd.h> | readlink(const char*pathName,char*buf,int bufSzie) | 查看pathname链接,信息存在buf中,并返回bufsize | ||
管道文件操作 | #include<stdio.h> | int pipe(int fdes[2]) | 用于不同进程数据信息传递(管道创立成功返回文件描述符 | |
普通设备相当于Linux目录/dev中的文件,用基于文件描述符I/O操作进行读写 | ||||
特殊设备特殊性(磁带只能顺序读写访问,不能使用lseek随机读写 | ||||
设置缓存属性 | #include<stdio.h> | void setbuf(FILE*fp,char*buf) | 激活或禁止缓冲区开关,BUFSIZ(全缓存)或无缓存 | |
_IOFBF 全缓存 | void setbuffer(FILE*fp,char*buf,size_t size) | 自行指定缓冲区大小 | ||
_IOLBF 行缓存 | void setlinebuf(FILE*fp) | 行缓存 | ||
_IONBF 无缓存 | int setvbuf(FILE*fp,char*buf,int mode,size_t size) | 灵活性 | ||
缓存清洗 | #include<stdio.h> | int fflush(FILE*fp) | 将缓冲区中尚未写入文件的数据强制保存到文件。成功0,失败EOF | |
#include<stdio_ext.h> | void fpurge(FILE*fp) | 清除缓冲区数据 | ||
流打开 | #include<stdio.h> | FILE*fopen(const char*pathName,const char*type) | 从头开始读写 | 1. //只有含w的不存在的文件会新建,其他会报错 |
FILE*freopen(const char*pathName,const char*type,FILE*fp) | freopen("input1.txt","r",stdin); | 2. //r只读;w只写;a尾增;文本ASCII | ||
成功返回文件指针,失败NULL | FILE*fdopen(int fd,const char *type) | 从尾开始读写 | 3. //rb读;wb写;ab尾增;二进制 | |
int fclose(FILE*fp) | 成功0,失败EOF;网络环境检查必要性 | 4. //以下读写↓ | ||
字符输入 | #include<stdio.h> | int getc ( FILE * fp ); | 读入字符 | 5. //r+;w+;a+;文本ASCII |
int fgetc ( FILE * fp ); | 6. //rb+;wb+;ab+二进制 | |||
int getchar (void);=getc(stdin) | ||||
字符输出 | #include<stdio.h> | int putc ( int c,FILE * fp ); | ||
int fputc (int c, FILE * fp); | ||||
成功c,出错EOF | int putchar (int c);=putc(c,stdout) | |||
行输入 | #include<stdio.h> | char*fgets(char*buf,int n,FILE*fp) | 缓冲区读到'\n'结束 | |
成功返回首地址,失败NULL | char*gets(char*buf); | 缓冲区由用户提供,缓冲区越界危险 | ||
行输出 | #include<stdio.h> | int fputs(const char *buf,FILE*restrict fp) | ||
成功返回字节数,失败-1 | int puts(const char*str) | 标准输出 | ||
直接I/O操作 | #include<stdio.h> | size_t fread ( void * ptr, size_t size, size_t count, FILE * fp ); | ||
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE*fp ); | ||||
格式化输出 | #include<stdio.h> | int printf ( const char * format, ... ) | ||
int fprintf ( FILE * fp, const char * format, ... ) | 右到左(可以int到char/string) | |||
int sprintf ( char*str, const char * format, ... ) | ||||
int snprintf ( const char *str,size_t size, format, ... ) | ||||
格式化输入 | #include<stdio.h> | int scanf ( const char * format, ...); | ||
int fscanf ( FILE*fp,char * str, const char * format, ...); | 左到右(可以char/string到int) | |||
int sscanf ( char * str, const char * format, ...); |
Linux文件I/O操作
原创
©著作权归作者所有:来自51CTO博客作者datrilla的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:Linux_常用命令

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
linux 文件I/O操作
目录一、linux系统文件和文件系统1.1文件类型1.2 system函数1.3linux文件权限1.4 设置系统文件、目录
linux I/O操作 #include 文件系统 -
Linux文件I/O操作(2)
内核使用三种数据结构表示打开的文件,它们之间的关系决定了多进程
文件描述符 数据 linux -
【APUE】文件 I/O 操作
APUE基础 文件 IO 相关操作open, close, creat, lseek, read, write 函数详解
apue io read write open -
【Linux】Linux文件I/O
图片来源于网络,侵删。直接使用系统调用的缺点:示例:直接IO和标准方式进行对比**示例:**
linux 运维 服务器 #include 数据 -
【linux】基本I/O操作&标准I/O操作(c语言编程)
open(),write(),read(),closefopen(),fwrite(),fread(),fclose
c语言 linux 基本I/O操作 标准I/O操作 -
小何讲Linux: 底层文件I/O操作
根据应用程序对文件的访问方式,即是否存在缓冲区,对文件的访问可以分为:带缓冲区的操作--缓冲文件系统非缓冲区的文件操作--非缓冲文件系统:
Linux 底层文件 IO操作 缓冲文件 非缓冲文件 -
buildroot配置编译opencv
这一篇讲一讲zynq移植Linux操作系统时需要使用的 rootfs1、rootfs简介rootfs用于生成linux启动时ramdisk.image,其和devicetree,linux-kernel产生的uimage一起由u-boot在启动过程中逐一加载,对于ramdisk的产生整个过程可以参看: http://xilinx.eetrend.com/blog/11092这里只有一个基本的流程,
buildroot配置编译opencv zynq linux环境移植 可执行文件 linux linux启动