#近期学习笔记一次性加入博客

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指令的代码实现相关推荐

  1. 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介

      Linux 下的进程通信手段基本上是从 UNIX 平台上的进程通信手段继承而来的.而对 UNIX 发展做出过重大贡献的两大主力 -- AT&T 的贝尔实验室和 BSD (加州大学伯克利分校 ...

  2. I.MX6U嵌入式Linux应用编程学习

    I.MX6U嵌入式Linux应用编程学习 目录 I.MX6U嵌入式Linux应用编程学习 〇.备忘 0.0 本文大写字母缩写说明 0.1 C编译 0.2 NFS与文件夹挂载 一.应用编程概念 1.1 ...

  3. 嵌入式Linux系统编程学习之二常用命令

    嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...

  4. 嵌入式Linux系统编程学习之一目录结构

    嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...

  5. 嵌入式Linux系统编程学习之十一Linux进程的创建与控制

    文章目录 一.fork函数 二.进程的终止 三.wait 和 waitpid 函数 四.exec 函数族 五.system 函数 六.popen 函数 总结 一.fork函数 fork 函数原型: # ...

  6. 嵌入式Linux系统编程学习之三vi编辑器

    文章目录 前言 一.插入文本 二.删除与修改 三.光标的移动 四.查找与替换 五.块操作 六.结束编辑 前言 在Linux下编程,使用编辑器vi(vim).gedit或Emacs,编译链接器gcc,调 ...

  7. 嵌入式Linux系统编程学习之二十八线程的等待退出

    文章目录 一.等待线程退出 二.线程的取消 三.线程终止清理函数 一.等待线程退出   线程从入口点函数自然返回,或者主动调用 pthread_exit 函数都可以让线程正常终止.线程从入口点函数自然 ...

  8. 嵌入式Linux系统编程学习之九基于文件描述符的文件操作

    文章目录 前言 一.文件描述符 二.打开.创建和关闭文件 三.读写文件 四.改变文件大小 五.文件定位 六.原子操作 七.进一步理解文件描述符 八.文件描述符的复制 九.文件的锁定 十.获取文件信息 ...

  9. 嵌入式Linux系统编程学习之三十三网络相关概念

    文章目录 一.网络相关名词的概念 1.套接口 2.端口号 3.IP 地址 二.Socket 概念 三.Socket 类型 四.Socket 的信息数据结构 五.数据存储优先顺序的转换 六.地址转格式转 ...

最新文章

  1. 3G网络关闭,4G还会远吗?
  2. c语言中结构体的用法
  3. 深度学习损失函数大全
  4. Element UI级联选择器(Cascader)获取级联对象
  5. python多线程加锁异步处理装饰器
  6. android打印参数类型,__android_log_vprint可变参数打印日志
  7. python cnn代码详解 keras_python – CNN返回相同的分类结果(keras)
  8. 如何调整html中音乐播放器的大小,html5实现在线响应式音乐播放器
  9. django和mysql
  10. ​炸裂!万字长文拿下 HTTP 我在字节跳动等你!
  11. easyuI企业管理系统-实战二 表格引入json数据
  12. (原创)c#学习笔记03--变量和表达式03--变量01--简单类型
  13. HDU 1210 Eddy's 洗牌问题(foj1062) || FOJ1050 Number lengths水
  14. CentOS6.5 firefox安装flash插件
  15. Pytest + Allure 测试报告定制
  16. android常见线程简要分析
  17. HDS 高端存储TC原理和配置总结
  18. NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
  19. 服务器cpu怎么选,E5-2670 or i9-9900K
  20. echart x轴标签偏移_坐标轴名称位置偏移的问题

热门文章

  1. sa结构组网方式_5g组网SA和NSA的区别是啥?
  2. av_interleaved_write_frame错误 Invalid data found when processing input
  3. 基于Java实现的用于计算个人所得税的程序
  4. xHunt:针对科威特航运组织的攻击行动
  5. html5游戏 陈书艺,陈书艺:推动游戏前行 开启HTML5游戏之门
  6. 邂逅“命运之师”人生巨变
  7. 正在空谈「空谈“误国”」
  8. CentOS6u9 Oracle11g 单机OGG灾备部署测试
  9. 扫盲贴-汽车上坡辅助HAC和自动驻车Auto Hold秒懂
  10. 莫队-一个让查询的高效的方法-并不深刻的讲解文章-但是易懂!