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

1638_chdir函数的功能

         全部学习汇总:GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         今天看一个半生不熟的小函数,chdir。说半生不熟,是因为这个接口一看就知道是什么功能。然而,这个接口如何用可真就没啥想法了。

         最早接触这样的一个接口自然还是perl学习的时候,到了后面接触python也看到了类似的接口在os的模块之中。看起来,归根结底大家追溯到的还是UNIX的这一套。

1. 这个功能属于库函数的类别。

2. 从设计的准则上,这个是POSIX标准的接口,linux可能实现有所不同。跟前面看到的接口有相同的描述了。

3. 看起来,函数执行成功返回0,失败的时候返回-1是一个较为常见的处理方式。或许是某种标准或者规范。

4. 这里提出来的根目录的疑问,其实到了后面也就有一个大概的理解印证了。

1. 函数的接口功能就是切换工作目录,其实跟命令中的cd应该是基本类似的。然而,perl中的经典教程小骆驼中印象中提过,很多perl中的接口也不见得跟unix的接口有啥对等关系。而cd的类似功能,perl不会去实现。

2. 在标准方面,这个是满足POSIX.1-2007,之前看到的基本都是2008,这还是第一次看到2007的标准。

3. 结合示范代码以及描述,其实这个接口可以切换的目录还是很自由的。自然,权限以及特殊的冲突状态还是得考虑的。

         由此,前面分析的代码也就有一个很好去理解的基础了。这个函数其实是一个死循环,不断读取来自于终端的信息。如果判断出来是cd命令,那么就切换工作目录。如果切换失败给出错误提示,输出到stderr中。这样的处理过程是在不断进行的。

         继续往下,又是新的接口。倒是之前看过的fork,不过这次看到的应该是一个全新的实现,这样后续单独做这个分析。

         从整个程序的设计结构来看,其实是十分类似于嵌入式里面的一个简单的轮询处理的过程,整个处理过程就是在不断扫描处理的过程。可能这个只是用来阐明这样的一个简单机制,不然操作系统执行的时候必然会出现很多阻塞的情况。

http://www.lryc.cn/news/37112.html

相关文章:

  • 使用CEF 获得某头条请求,并生成本地文件的方法
  • 二十、Django-restframework之视图集和路由器
  • [深入理解SSD系列 闪存实战2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型
  • 论文阅读-MGTAB: A Multi-Relational Graph-Based Twitter Account DetectionBenchmark
  • 基于libco的c++协程实现(时间轮定时器)
  • java多线程与线程池-04线程池与AQS
  • 优化模型验证关键代码25:样本均值近似技术处理两阶段随机旅行商问题及Gurobipy代码验证
  • 老爸:“你做的什么游戏测试简直是不务正业!”——我上去就是一顿猛如虎的解释。
  • JVM垃圾回收调优知识点整理
  • linux安装mysql-8.0.31
  • 2023 年会是网络安全的关键年吗?
  • 【深度强化学习】(1) DQN 模型解析,附Pytorch完整代码
  • Nginx服务优化与防盗链
  • npm与yarn常用命令
  • 【C++】C++11新特性——右值引用
  • C#基础教程21 正则表达式
  • 聚观早报|谷歌发布最大视觉语言模型;王兴投资王慧文ChatGPT项目
  • java Spring5 xml配置文件方式实现声明式事务
  • 常用存储芯片-笔记本上固态硬盘PTS11系列推荐
  • 【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)
  • 【设计模式】模板方法模式和门面模式
  • Kubernetes未来十年的四大发展趋势
  • 一、sql 基础知识、函数和子查询
  • 产品射频认证笔记
  • 做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)
  • 【Flutter从入门到入坑】Flutter 知识体系
  • 顺序表的基本操作
  • 设计模式——创建型模型——单列模式(8种实现)
  • 【软考中级】软件设计师笔记
  • 包教包会的ES6