Curtis7 2023-07-06 11:25 采纳率: 0%
浏览 91
已结题

双击打开一个目录是什么系统调用打开

我在学习操作系统这门课程的时候,课本说用户第一次请求对某文件进行操作时,须先利用open系统调用将该文件打开,这个我明白,open之后会从根目录开始,把目录一级级调入内存,查找到对应的目录项后就能找到对应的文件物理存放地址。
对此我的疑问是:在linux环境下,比如我双击桌面上的一个文件夹(目录),目录里面会显示FCB,然后再找到一个目录后再双击打开,一层层,这些动作是通过open还是opendir系统调用打开?目录是一种特殊的文件,所以它会怎么选择呢?有点分不清楚。其次,如果双击打开文件夹这一操作使用的是opendir,它一级级把目录调入内存,到最后一步时,依然要面对一个文件,那是不是又要使用open系统调用。求赐教。

  • 写回答

4条回答 默认 最新

  • 关注

    文件是linux的基础,文件夹也是一种特殊的文件,这个你是知道的。所有文件打开的基本函数是open(),open()函数打开一个文件(含目录)后,会得到这个文件的属性,从这个属性中可以知道,这个文件是一个目录还是一个真正的文件。
    而opendir()函数只能打开一个目录,也就是说,传给opendir()函数的参数必须是一个目录,这样才能正确的打开,否则就会失败。
    open()函数则没有这个限制,只要参数传入的文件(或目录)存在,且有权限,就能正确打开。
    所以,open()函数是更通用的,opendir()函数则一般在确定是打开目录的时候才会使用。
    比如,你的电脑上有个/home/test/目录,那么你可以直接使用opendir()函数来打开,这样能使得代码更有阅读性,通过字面含义就能让你知道,你这里就是要打开一个目录。而open()函数的阅读性就会差一些,通过这个函数,你无法明确的知道你想要打开的是一个目录还是一个文件。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月6日
  • 修改了问题 7月6日
  • 赞助了问题酬金15元 7月6日
  • 创建了问题 7月6日

悬赏问题

  • ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点