小编Mon*_*bus的帖子

使用 C 处理 POSIX 中的目录

我会继续说这是 Linux 课程介绍的家庭作业。我不会在没有自己广泛尝试的情况下发布它,并且由于我本学期是远程学生,因此无法到校园进行辅导。我需要一些帮助来找出问题所在。

本质上,作业要求我们制作一个程序,该程序的基本功能与pwdPOSIX 中的命令相同,以显示当前目录的绝对路径。我们将与 main 一起使用三个函数。我们也不要使用该getcwd命令。我会列出他们和他们的目的

  • inum_to_filename: 接受三个参数(要转换的 inode 编号、指向写入名称的缓冲区的指针以及缓冲区的大小)。什么都不返回。它是为了:

    1. 打开当前目录,
    2. 读取第一个目录条目,
    3. 如果当前目录的 inode 与传入的 inode 匹配,则将 name 复制到缓冲区并返回。
    4. 否则读取下一个目录条目并重复上一步。
  • filename_to_inum: 接受一个参数(achar *表示文件名)。它返回相应的 inode 编号。它是为了:

    1. 将文件 inode 中的信息读取到内存中的结构中。
    2. 如果有任何问题,请显示相应的错误。
    3. 从结构中返回 inode 编号。
  • display_path: 接受一个参数(来自当前工作目录的 inode)。它什么都不返回。它是为了:

    1. 创建一个字符数组以用作目录名称的缓冲区。
    2. 使用 获取父目录的 inode filename_to_inode
    3. 如果父 inode 等于当前 inode,我们就达到了 root 并且可以返回。
    4. 否则,切换到父目录并使用它inum_to_filename来查找传递给函数的 inode 的名称。使用步骤 1 中的缓冲区来存储它。
    5. 递归调用display_path显示绝对路径。

这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h> …
Run Code Online (Sandbox Code Playgroud)

c unix directory posix

6
推荐指数
1
解决办法
869
查看次数

标签 统计

c ×1

directory ×1

posix ×1

unix ×1