嵌入式Linux C编程学习之路(八)——read/write,lseek函数,cp指令的代码实现
#近期学习笔记一次性加入博客
1. write
write(intfd, void *buf, size_t count ):
第一个参数:向哪一个文件中去写;第二个参数:向这个文件中写什么内容;第三个参数:向这个文件中写多少个。
返回值:是实际写的字节数。
2. read
read(intfd, void *buf, size_t count)
第一个参数:从哪一个文件中去读;第二个参数:读到什么地方去;第三个参数:读多少个。
返回值:是实际读的字节数
3. lseek
每个内核文件都有个文件读写位置指针,可以通过lseek函数调整这个位置。
leek(intfd, off_t offset, int whence),该函数的头文件:sys/types.h unistd.h;
功能:调整读写的位置指针;
第一个参数:要调整的文件的文件描述符;
第二个参数:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移);
第三个参数:当前位置的基点,有三个标志,
SEEK_SET:当前位置为文件的开头,新位置为偏移量的大小;
SEEK_CUR:当前位置为文件指针的位置,新位置为当前位置加上偏移量。
SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏移量的大小。
函数的返回值:成功:文件当前的位置,出错:-1。
4. 示例,简单实现cp命令,拷贝文件
#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
#include "string.h"
int main(int argc,char *argv[]){
int rd_fd,wr_fd;
char read_buf[128] = {0};
int rd_ret = 0;
if(argc < 3){
printf("Please input src file and dst file \n");
return -1;
}
rd_fd = open(argv[1],O_RDONLY);
if(rd_fd < 0){
printf("open src file %s error\n",argv[1]);
return -2;
}
printf("open src file %s success, rd_fd = %d\n",argv[1],rd_fd);
wr_fd = open(argv[2],O_WRONLY);
if(wr_fd < 0){
printf("open dst file %s error\n",argv[2]);
return -3;
}
printf("open dst file %s success, wr_fd = %d\n",argv[2],wr_fd);
while(1){
rd_ret = read(rd_fd,read_buf,128);
if(rd_ret < 128){
break;
}
write(wr_fd,read_buf,rd_ret);
memset(read_buf,0,128);
}
write(wr_fd,read_buf,rd_ret);
close(rd_fd);
close(wr_fd);
return 0;
}
嵌入式Linux C编程学习之路(八)——read/write,lseek函数,cp指令的代码实现相关推荐
- 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介
Linux 下的进程通信手段基本上是从 UNIX 平台上的进程通信手段继承而来的.而对 UNIX 发展做出过重大贡献的两大主力 -- AT&T 的贝尔实验室和 BSD (加州大学伯克利分校 ...
- I.MX6U嵌入式Linux应用编程学习
I.MX6U嵌入式Linux应用编程学习 目录 I.MX6U嵌入式Linux应用编程学习 〇.备忘 0.0 本文大写字母缩写说明 0.1 C编译 0.2 NFS与文件夹挂载 一.应用编程概念 1.1 ...
- 嵌入式Linux系统编程学习之二常用命令
嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...
- 嵌入式Linux系统编程学习之一目录结构
嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...
- 嵌入式Linux系统编程学习之十一Linux进程的创建与控制
文章目录 一.fork函数 二.进程的终止 三.wait 和 waitpid 函数 四.exec 函数族 五.system 函数 六.popen 函数 总结 一.fork函数 fork 函数原型: # ...
- 嵌入式Linux系统编程学习之三vi编辑器
文章目录 前言 一.插入文本 二.删除与修改 三.光标的移动 四.查找与替换 五.块操作 六.结束编辑 前言 在Linux下编程,使用编辑器vi(vim).gedit或Emacs,编译链接器gcc,调 ...
- 嵌入式Linux系统编程学习之二十八线程的等待退出
文章目录 一.等待线程退出 二.线程的取消 三.线程终止清理函数 一.等待线程退出 线程从入口点函数自然返回,或者主动调用 pthread_exit 函数都可以让线程正常终止.线程从入口点函数自然 ...
- 嵌入式Linux系统编程学习之九基于文件描述符的文件操作
文章目录 前言 一.文件描述符 二.打开.创建和关闭文件 三.读写文件 四.改变文件大小 五.文件定位 六.原子操作 七.进一步理解文件描述符 八.文件描述符的复制 九.文件的锁定 十.获取文件信息 ...
- 嵌入式Linux系统编程学习之三十三网络相关概念
文章目录 一.网络相关名词的概念 1.套接口 2.端口号 3.IP 地址 二.Socket 概念 三.Socket 类型 四.Socket 的信息数据结构 五.数据存储优先顺序的转换 六.地址转格式转 ...
最新文章
- 3G网络关闭,4G还会远吗?
- c语言中结构体的用法
- 深度学习损失函数大全
- Element UI级联选择器(Cascader)获取级联对象
- python多线程加锁异步处理装饰器
- android打印参数类型,__android_log_vprint可变参数打印日志
- python cnn代码详解 keras_python – CNN返回相同的分类结果(keras)
- 如何调整html中音乐播放器的大小,html5实现在线响应式音乐播放器
- django和mysql
- ​炸裂!万字长文拿下 HTTP 我在字节跳动等你!
- easyuI企业管理系统-实战二 表格引入json数据
- (原创)c#学习笔记03--变量和表达式03--变量01--简单类型
- HDU 1210 Eddy's 洗牌问题(foj1062) || FOJ1050 Number lengths水
- CentOS6.5 firefox安装flash插件
- Pytest + Allure 测试报告定制
- android常见线程简要分析
- HDS 高端存储TC原理和配置总结
- NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
- 服务器cpu怎么选,E5-2670 or i9-9900K
- echart x轴标签偏移_坐标轴名称位置偏移的问题
热门文章
- sa结构组网方式_5g组网SA和NSA的区别是啥?
- av_interleaved_write_frame错误 Invalid data found when processing input
- 基于Java实现的用于计算个人所得税的程序
- xHunt:针对科威特航运组织的攻击行动
- html5游戏 陈书艺,陈书艺:推动游戏前行 开启HTML5游戏之门
- 邂逅“命运之师”人生巨变
- 正在空谈「空谈“误国”」
- CentOS6u9 Oracle11g 单机OGG灾备部署测试
- 扫盲贴-汽车上坡辅助HAC和自动驻车Auto Hold秒懂
- 莫队-一个让查询的高效的方法-并不深刻的讲解文章-但是易懂!