linux c编程open() read() write()函数的使用方法及实例
来源:互联网 发布:腾讯云申请域名 编辑:程序博客网 时间:2024/06/06 17:35
常用的文件IO函数有标题的三个open() read() write() .首先打开一个文件使用open()函数,然后可以获取到一个文件描述符,这个就是程序中调用这个打开文件的一个链接,当函数要求到文件描述符fd的时候就把这个返回值给函数即可.read跟write都差不多,格式:read(文件描述符,参数,权限) write(文件描述符,参数,权限),返回值是读取或写入的字符数.其中的权限可以省略,文件描述符就是open()函数的返回值,而参数呢有O_RDONLY(只读) O_WRONLY(只写) O_RDWR(读写) O_CREAT(若不存在则新建) O_TRUNC(若不为空则清空文件)等.对函数想有更多了解可以察看linux下c编程的函数手册.
写个小例子:文件备份程序
功能:输入一个"文件名",将生成"文件名.backup"的备份文件.若输入量超过两个或者无输入量,报错,若文件不存在或无权限,报错.成功返回提示.
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <fcntl.h>
- int main(int argc,char *args[]) {
- char buff[1024];
- int fd1,fd2,i;
- int baksize = sizeof(args[1])+7;
- char bakfile[baksize];
- // input one file only
- if(argc != 2){
- printf("Input one file a time!\n");
- exit(1);
- }
- //bakfile="XXX.backup"设置备份文件名称
- strcpy(bakfile,args[1]);
- strcat(bakfile,".backup");
- //open()
- fd1 = open(args[1],O_RDONLY,0644);
- fd2 = open(bakfile,O_RDWR|O_CREAT|O_TRUNC);
- if((fd1 < 0)||(fd2 < 0)){
- printf("Open Error!Check if the file is exist and you have the permission!\n");
- exit(1);
- }
- //read from fd1 and write buff to fd2
- while((i = read(fd1,buff,sizeof(buff))) > 0) {
- write(fd2,buff,i);//这里需要用读取到的字符数,否则会出错,因为buff数组有可能未被全覆盖
- }
- close(fd1);
- close(fd2);
- printf("Backup done!\n");
- exit(0);
- }
- linux c编程open() read() write()函数的使用方法及实例
- linux c编程open() read() write()函数的使用方法及实例
- Linux C read、write、creat、open等函数应用实例
- Linux的C函数open()、read()和write()使用说明
- Linux的C函数open()、read()和write()使用说明
- C语言open,read,write函数,及文件读写
- C语言open,read,write函数,及文件读写
- Linux&C open creat read write lseek 函数用法总结
- open、read、write、close函数应用实例
- Linux -C 的read 和 write函数
- Linux -C 的read 和 write函数
- Linux常用C函数open和read以及write的使用说明
- Linux常用C函数open和read以及write的使用说明
- Linux常用C函数open和read以及write的使用说明
- Linux常用C函数open和read以及write的使用说明
- linux下的open()read()write()close()lseek()函数
- Linux C编程学习笔记(3):read、write、lseek函数及文件读写和文件读写指针的移动操作
- linux下 open() write() read() close函数
- 将内核API编译为man手册
- pthread_attr_init线程属性
- 使用jquery获取父元素或父节点的方法
- 用sqlplus远程连接oracle命令
- php排序函数
- linux c编程open() read() write()函数的使用方法及实例
- [LeetCode] Binary Tree Inorder Traversal
- 无法找到此网页
- 策略模式(Strategy)
- Flash图表控件FusionCharts自定义图表y轴最大/最小值
- V4L2总结(4)_代码示例_2__zzhere2007
- cocos2d-x 文件读取与存储
- 调试小记(主要记录自己的调试过程)---关于core dump
- 项目整改