rabbitfoot530's diary

読んだ本と、プログラムに関することのメモです。好きな言語は、C++, Python, Golang, TypeScript。数学・物理・学習理論も好きです。

inodeから、ファイル名を取得する

inodeからファイル名を取得する関数ってないのかな?
作ってみました。

#include <iostream>

#include <dirent.h>
#include <cstring>
const std::string getFileNameByFd(unsigned int ino, const char* path) {
  DIR* dp = opendir(path);
  struct dirent* dir;

  std::string d_name;
  while (NULL != (dir = readdir(dp))) {
    if (dir->d_ino == ino) {
      d_name = dir->d_name;
      break;
    }
  }

  return d_name;
}                                                                                                                 

#include <sys/types.h>
#include <sys/stat.h>
int main() {
  const char* path = "/path/to/dir";

  struct stat st;
  stat("/path/to/file", &st);

  std::cout << "File inode: " << st.st_ino << std::endl;
  std::cout << "---------------------" << std::endl;
  std::cout << "File name by inode: " << getFileNameByFd(st.st_ino, path) << std::endl;

}