Unix/Linux下文件基本操作 来源: ChinaUnix博客  日期: 2008.06.16 17:16 (共有0条评论) 我要评论
比较重要的设备文件有三个,它们是/dev/console、/dev/tty 和 /dev/null
1,/dev/console设备:系统控制台,出错和诊断信息通常会被发送到这个设备。
2,/dev/tty设备:进程控制终端的一个假名。
3,/dev/null:空设备,所以写向这个设备的输出都将被丢弃。而读这个设备会立刻返回一个文件尾标志。
文件的系统调用函数:
文件描述符:
0:标准输入;
1:标准输出;
2:标准错误;
open系统调用:
建立一条到文件或者设备的访问路径,如果操作成功,它将返回一个文件描述符,后续的read,write等系统调用就将使用该文件描述符对打开的那个文件进行操作。
int open (const char *path,int oflags);
int open (const char *path,int oflags,mode_t mode);
oflags参数是通过把要求的文件访问模式与其它可选模式按位or得到的。
文件访问模式:O_RDONLY(只读)O_WRONLY(只写)O_RDWR(读写)
其它可选模式:
O_APPEND(把写入的数据追加在文件的末尾)
O_TRUNC(把文件的长度设置为0,丢弃其中现有的内容)
O_CREAT(按mode中给出的模式创建文件)
O_EXCL(与o_creat一起使用,如果文件存在,open操作失败)
mode参数:
S_IRUSR:读权限,文件属主
S_IWUSR:写
S_IXUSR:执行权限,文件属主
S_IRGRP:读
S_IWGRP:写
S_IXGRP:执行权限,文件所在分组
S_IROTH:读
S_IWOTH:写
S_IXOTH:执行权限,其它用户
如:
open ("myfile", O_CREAT, S_IRUSR | S_IXOHT);
创建一个名为myfile的文件,文件的属主拥有它的读操作权限,其它用户只能执行。Mode会受umask决定。(chmod umask myfile)
close系统调用:
终止一个文件描述符fildes与它文件之间的关联。
int close (int fildes);
write系统调用:
把缓冲区BUF里的前nbytes个字节写入与文件描叙符fildes相关联的文件中去。
size_t write(int fildes,const void *buf ,size_t nbytes);
read系统调用:
与文件描叙符fildes相关联的文件中的读入前nbytes个数据读,并把它们放到字节缓冲区BUF。它的返回值是实际读入的字节数,它可能会小于nbytes的值。
size_t read(int fildes,const void *buf ,size_t nbytes);
ioctl系统调用:
提供一个对设备行为,设备描述符,设备底层服务的配置工作等方面进行控制的操作界面。
int ioctl(int fildes,int cmd, ... );
lseek,fstat,stat,lstat系统调用,先跳过;
标准IO库:
fopen函数:
FILE *fopen(const char *filename,const char *mode);
打开模式有:
"r" "rb" 只读方式打开
"w" "wb" 以写方式打开,并把文件长度截短为零
"a" "ab" 以写方式打开,新内容追加在文件尾
"r+" "rb+" "r+b" 以修改方式打开,(读写)
"w+" "wb+" "w+b" 以修改方式打开,并把文件长度截短为零
"a+" "ab+" "a+b" 以修改方式打开,新内容追加在文件尾
字母“b”表示文件是一个二进制文件。UNIX把所以文件都看成是二进制文件。
mode参数是一个字符串,所以要使用"r",而不是'r';
fread 函数:
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
从文件流stream读数据到ptr指定的数据缓存区里。它的返回值是成功地读到数据缓存区里的记录个数,而不是字节数。
fwrite函数:
size_t fwrite (const void *ptr, size_t size, size_t nitems, FILE *stream);
从指定数据缓存取数据写到输出流去。
fclose函数:
int fclose (FILE *stream);
关闭指定的文件流stream,使所以尚未写出的数据都写到文件里去。
fflush函数:
int fflush(FILE *stream);
把文件流里的现有数据立刻写入文件。
fseek函数:
int fseek(FILE *stream, long int offset, int whence);
为下一次读写操作设置偏移位置。
fgetc,getc,getchar函数:
int fgetc(FILE *stream); 从文件流里取出下一个字节并把它当做一个字符返回。当它达到文件尾或出现错误时,返回EOF。
int getc (FILE *stream); 作用相当于fgetc,但我们可以在stream参数不允许有副作用的情况下把getc实现为一个宏。
int getchar(); 相当getc(stdin),
fputc,putc,putchar函数:
int fputc(int c, FILE *stream); 把一个字符写到输出文件流里,返回值为刚写的那个值,失败返回EOF。
int putc(int c, FILE *stream); 相当于fputc,但可以实现为一个宏。
int putchar(int c); 相当putc(stdout);
fgets,gets函数:
char* fgets(char *s,int n, FILE *stream);从输入文件流读取n-1个字符加上"\0"写到s指向的字符串去。
char* gets(char *s);对传输的字符个数没限制,避免使用!
printf ,scanf 等跳过。
chmod,chown 略。
unlink,link ,symlink系统调用:
int unlink (const char *path);
int link(const char *path1, const char *path2);
int symlink(const char *path1, const char *path2);
目录相关操作函数:
mkdir,rmdir系统调用:
int mkdir (const char *path, mode_t mode);
int rmdir (const char *path);

chdir,getcwd系统调用:
int chdir(const char *path);改变工作目录。
int *getcwd(char *buf,sizo_t size);把当前子目录的名字写到给定的BUF里。
扫描子目录函数:
与子目录相关的函数是在一个名为dirent.h的头文件里被申明的。它们使用一个名为DIR的结构做为子目录处理操作的基础。“子目录流”(directory stream)指向DIR结构的指针,被用来完成各种普通的子目录操作。
opendir,readdir函数:
DIR * opendir(const char *name); 打开一个子目录并建立一个子目录流。
struct dirent *readdir(DIR *dirp); 返回一个结构体指针,结构体里保存着子目录流dirp中下一个目录数据项的有关资料。
telldir函数:
long int telldir (DIR *dirp); 返回值里记录着子目录流里的当前位置。可在seekdir调用里利用这个值对当前位置再做一次子目录扫描。
seekdir函数:
void seekdir(DIR *dirp, long int loc);对dirp指定的子目录流中的目录数据项的指针进行设置,loc的值用来设置指针的位置。
closedir函数:
int closedir(DIR *dirp);关闭一个子目录并释放与之相关联的资源。
mmap函数:将创建一个指向一段内存的指针,该指针将与通过一个打开的文件描述符来访问的文件的内容相关联。
void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);
用传递off参数的办法可以改变经共享内存段访问的文件中数据的起始偏移值。
msync函数:把该内存段的某个部分或整段中的修改写回到被映射文件里,(或者从被映射的文件里读出)
int msync(void *addr, size_t len, int flags);
munmap函数:释放内存段
int munmap(void *addr, size_t len);

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/62377/showart_1002983.html

转载于:https://blog.51cto.com/axlrose/1289315

Unix/Linux下文件基本操作[zt]相关推荐

  1. Linux下文件描述符

    Linux下文件描述符 标签: linuxfilelinux内核apacheunixsocket 2012-08-17 15:45 5798人阅读 评论(0) 收藏 举报 分类: 调优和安全(5) 版 ...

  2. linux下文件描述符的介绍

    linux下文件描述符的介绍 (2012-10-02 16:01:56) 转载▼ 标签: 描述符 调用 返回 进程 限制 it 分类:linux 当某个程序打开文件时,操作系统返回相应的文件描述符,程 ...

  3. linux下文件删除的原理精华讲解(考试题答案系列)

    说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://oldboy.blog.51cto.com/2561410 ...

  4. linux下目标文件的类型6,Linux下文件类型

    Linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为 ...

  5. linux用户文件描述符2表示,Linux下文件描述符

    Linux下文件描述符 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的文件是0,第二个是1,依此类推.Unix操作系 统通常给每个进程能打开的文件数量强加一个 ...

  6. Linux下文件的压缩与解压缩

    Linux下文件的压缩与解压缩与Windows环境下有较大的区别,在Windows下只需要安装类似Winrar工具就能解压缩大部分文件,而在Linux命令行下每一种文件都有不同的压缩和解压缩方法. 使 ...

  7. linux下文件字符集转化实战篇

    linux下文件字符集转化实战篇 ------------------------------------------ 为什么转换编码,起因:分析应用程序日志,文件编码格式gb2312(含中文字符), ...

  8. Linux下文件的三种时间戳

    Linux下文件的三种时间标记 三种时间对应关系表 column column column 访问时间 Access atime 修改时间 Modify mtime 状态改动时间 Change cti ...

  9. linux下文件的压缩和解压缩

    linux下文件的压缩和解压缩 目录 1.压缩 2.解压缩 3.归档工具 一. 压缩 compress: -d:解压缩,相当于uncompres-c:结果输出至标准输出,不删除原文件-v:显示详情 - ...

最新文章

  1. Nginx缓存设置教程
  2. 【心得】怪异的JS的Date函数
  3. Angular中父组件通过ViewChild调用子组件的方法
  4. PHP常用算法和数据结构示例(必看篇)
  5. node.js学习笔记14—微型社交网站
  6. EXECUTE IMMEDIATE用法小解
  7. 机器学习从入门到精通50讲(四)-实时数仓应用实践案例
  8. Linux/CentOS7install PackageError: Loaded plugins: fastestmirror
  9. 【UI/UX】桌面GUI设计
  10. delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...
  11. 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
  12. git上传到github
  13. 蓝桥杯 2017年C语言混搭 C/C++
  14. 盘点 | 2017 年关于 Python 的 12 件大事
  15. 学习common-upload源码,理解上传原理
  16. webservice 传输数据过大,解析失败
  17. 小飞侠淘试用免费领取系统-永久免费的试用领取网站开源程序!
  18. 颜色模型和颜色应用---YIQ颜色模型
  19. vsCode的使用过程中遇到的问题?
  20. 从0到1-强化学习篇

热门文章

  1. git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目
  2. python最基本的规则是关键字吗,Python 关键字
  3. 行业精英聚首谈智慧营销:团队打造、管理策略、权力分配、成功因素、IT 治理……...
  4. 【干货下载】聚美优品、中商惠民、倍全,如何让数据驱动“新零售”落地?...
  5. poj 3537 Crosses and Crosses 博弈论之grundy值
  6. Android用户界面设计学习之旅-第二站
  7. Hibernate程序性能优化的考虑要点
  8. 2021-08-25路演的反馈
  9. modnet是一个无需绿幕,扣人像,笔记本上跑到10-20帧
  10. C++右值引用的参考