C程序:如何获取父目录的inode号?

发布于 2024-08-19 02:57:14 字数 129 浏览 4 评论 0原文

如何获取目录 inode 编号 /home/laks/file.txt 我需要 laks 目录的 inode 号。任何内置功能都可用吗? 我想如果我剪切文件名我可以使用 stat()...但是任何其他解决方案都可以在不删除文件名的情况下使用。

How to get directory inode number say /home/laks/file.txt
I need the inode number of laks directory. Any built-in function is already available?
I think i could use stat() if i cut the file name...but any other solution to this without removing file name.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吹梦到西洲 2024-08-26 02:57:14
#include <libgen.h>
#include <sys/stat.h>
...
struct stat statbuf;
if (stat(dirname(argv[1]), &statbuf) != -1)
    process_inode_number(statbuf.st_ino);

请注意,dirname() 可能会修改字符串,因此如果您仍然需要它,或者它可能是字符串文字(位于只读内存中),请使用 strdup() 为 dirname() 制作字符串的副本。

#include <libgen.h>
#include <sys/stat.h>
...
struct stat statbuf;
if (stat(dirname(argv[1]), &statbuf) != -1)
    process_inode_number(statbuf.st_ino);

Note that dirname() may modify the string, so if you still need it, or if it may be a string literal (which is in read-only memory), then use strdup() to make a copy of the string for dirname().

悲歌长辞 2024-08-26 02:57:14
a=/home/laks/file.txt
dir=${a%/*}
set -- $(ls -ldi $dir)
echo $1

或者如果你想递归目录

find /path -type f -name "*.txt" -printf 'stat -c "%%n:%%i" "%h"\n' | sort -u |bash
a=/home/laks/file.txt
dir=${a%/*}
set -- $(ls -ldi $dir)
echo $1

or if you want to recurse directory

find /path -type f -name "*.txt" -printf 'stat -c "%%n:%%i" "%h"\n' | sort -u |bash
多像笑话 2024-08-26 02:57:14

尝试:在 shell 上使用 ls -ali 。您可以在第三列找到 inode 编号。

try : ls -ali on shell. You can find inode numbers on 3rd column.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文