当前位置: 首页 > news >正文

文件系统-重定向

ls -a -l > myfile

  • > myfile:这是输出重定向操作符,它会将 ls -a -l 命令的输出结果,覆盖写入到名为 myfile 的文件中。如果 myfile 不存在,就创建它;如果已存在,就清空原内容后写入新内容。

ls -a -l >> myfile

  • >> myfile:这是追加输出重定向操作符,它会将 ls -a -l 命令的输出结果,追加到 myfile 文件的末尾 。如果 myfile 不存在,会先创建文件再写入内容;如果已存在,则不会清空原内容,而是直接在文件尾部添加新输出内容。

cat < file.txt

  • < file.txt:这是输入重定向操作符,它会将 file.txt 文件的内容作为 cat 命令的输入,也就是让 cat 命令读取 file.txt 文件并输出其内容到终端。 不过这种写法不是很常见,常规写法是 cat file.txt ,效果是一样的,都是读取并显示 file.txt 的内容。

应该知道linux下一切皆文件:所以文件描述符的前三个位置是用来存储in,out,err但是当你关闭了其中一个后,再次打开新的文件就会优先选择下标低的位置!

这个图也可以看出重定向的原理。图中的dup2函数是一种复制函数。它也用于重定向!

关于重定向的应用:下面函数是把一个程序中的错误码输出和正确输出分开写进两个日志!

缓冲区:

切记write接口它会把它的数据放进系统缓冲区,然后系统缓冲区再把数据根据自己的刷新策略交给磁盘!

关于上面这个图的c缓冲区,它是用户级别不是系统级别因为语言层都是用户级别

进程退出会强制刷新!

正常打印是遇到\n是行刷新!,但是当你进行一个文件重定向输入的时候它会会改为全缓冲!

缓冲区的本质就是一段连续的内存空间,起到平衡数据产生和处理速度差异,减少I/O操作次数等作用!

这里的fork一旦出现操作系统就会生成一个子进程,当你有了子进程的也就意味着你发生了写时拷贝,要知道的是写时拷贝也是会拷贝缓冲区里的内容的。所以就会出现打印到文件里面会发现有两遍缓冲区的内容!!!

http://www.dtcms.com/a/112073.html

相关文章:

  • 架构思维:冷热分离 - 表数据量大读写缓慢的优化方案
  • 有没有可以帮助理解高数的视频或者书籍资料?
  • 【力扣hot100题】(050)岛屿数量
  • 消息队列之-Kafka
  • #Linux内存管理# 在ARM32bit Linux中,高端内存的起始地址是如计算出来的?
  • 思二勋:未来所有的业务都将生于AI、长于AI、成于AI
  • 搜索二维矩阵
  • 笔记:代码随想录算法训练营day65:dijkstra(堆优化版)精讲、Bellman_ford 算法精讲
  • Docker安装、配置Redis
  • 使用Expo框架开发APP——详细教程
  • 【JavaScript】原型链 prototype 和 this 关键字的练习(老虎机)
  • 安当TDE透明加密:构建跨地域文件服务器安全传输的“双重保险“
  • VBA中类的解读及应用第二十二讲:利用类判断任意单元格的类型-5
  • C语言:3.31
  • 【YOLO系列(V5-V12)通用数据集-火灾烟雾检测数据集】
  • 大模型学习四:‌DeepSeek Janus-Pro 多模态理解和生成模型 本地部署指南(折腾版)
  • 七均线策略思路
  • Mac VM 卸载 win10 安装win7系统
  • Win7下安装高版本node.js 16.3.0 以及webpack插件的构建
  • Apache Camel指南-第四章:路由径构建之异常处理
  • 如何使用 IntelliJ IDEA 开发命令行程序(或 Swing 程序)并手动管理依赖(不使用 pom.xml)
  • 从飞机的状态矩阵A阵求运动模态的特征根、求传递函数矩阵
  • NOIP2013提高组.华容道
  • 从菜鸟到高手的提示词优化指南‌
  • Muduo网络库介绍
  • Sensodrive力控关节模组SensoJoint:TÜV安全认证助力机器人开发
  • 主机和虚拟机间的网络通信
  • LeetCode算法题(Go语言实现)_29
  • JavaScript重难点突破:事件循环
  • 基于 Python 的自然语言处理系列(70):检索增强生成(RAG)