当前位置: 技术问答>linux和unix
小弟关于i节点的疑问
来源: 互联网 发布时间:2016-11-28
本文导语: 小弟在现在实现LS命令 用到啦readdir函数, 这个函数中返回一个结构体是: struct dirent { ino_t d_ino; char d_name[NAME_MAX+1] } 针对这个函数的使用倒是没有问题 但是i_ino d_ino应该是i节点编号数 ...
小弟在现在实现LS命令
用到啦readdir函数,
这个函数中返回一个结构体是:
struct dirent
{
ino_t d_ino;
char d_name[NAME_MAX+1]
}
针对这个函数的使用倒是没有问题
但是i_ino d_ino应该是i节点编号数
我在头文件中找却没有找到 i节点结构体的定义
那为高手给小弟说一项i节点的结构提定义在什么地方
这是我在网上查到的i节点结构体
i节点结构如下(参考/usr/include/sys/ino.h):
struct dinode
{
ushort di_mode; /*文件类型+用户权限*/
short di_nlink; /*文件链接数*/
ushort di_uid; /*属主用户id*/
ushort di_gid; /*属主用户组id*/
off_t di_size; /*文件大小*/
char di_addr[40]; /*文件数据区起点地址*/
time_t di_atime; /*最后访问时间*/
time_t di_mtime; /*最后修改时间*/
time_t di_ctime; /*创建时间*/
};
但是这个路径下没有这个头文件
还有就是:
我用GDB来ptype long unsigned int
但是在程序中长整形输出出现段错误
用到啦readdir函数,
这个函数中返回一个结构体是:
struct dirent
{
ino_t d_ino;
char d_name[NAME_MAX+1]
}
针对这个函数的使用倒是没有问题
但是i_ino d_ino应该是i节点编号数
我在头文件中找却没有找到 i节点结构体的定义
那为高手给小弟说一项i节点的结构提定义在什么地方
这是我在网上查到的i节点结构体
i节点结构如下(参考/usr/include/sys/ino.h):
struct dinode
{
ushort di_mode; /*文件类型+用户权限*/
short di_nlink; /*文件链接数*/
ushort di_uid; /*属主用户id*/
ushort di_gid; /*属主用户组id*/
off_t di_size; /*文件大小*/
char di_addr[40]; /*文件数据区起点地址*/
time_t di_atime; /*最后访问时间*/
time_t di_mtime; /*最后修改时间*/
time_t di_ctime; /*创建时间*/
};
但是这个路径下没有这个头文件
还有就是:
我用GDB来ptype long unsigned int
但是在程序中长整形输出出现段错误
|
[Owner@andlinux include]$ find . -name "*.h" | xargs grep ino_t
./asm/posix_types_32.h:typedef unsigned long __kernel_ino_t;
./asm/posix_types_64.h:typedef unsigned long __kernel_ino_t;
……
./linux/coda.h:typedef u_long ino_t;
./linux/coda.h: ino_t inode;
./linux/types.h:typedef __kernel_ino_t ino_t;
./bits/dirent.h: __ino_t d_ino;
……
[Owner@andlinux include]$
樓主到/usr/include目錄下,執行命令“find . -name "*.h" | xargs grep ino_t”,posix_types_32.h和posix_types_64.h和types.h里有定義。
./asm/posix_types_32.h:typedef unsigned long __kernel_ino_t;
./asm/posix_types_64.h:typedef unsigned long __kernel_ino_t;
……
./linux/coda.h:typedef u_long ino_t;
./linux/coda.h: ino_t inode;
./linux/types.h:typedef __kernel_ino_t ino_t;
./bits/dirent.h: __ino_t d_ino;
……
[Owner@andlinux include]$
樓主到/usr/include目錄下,執行命令“find . -name "*.h" | xargs grep ino_t”,posix_types_32.h和posix_types_64.h和types.h里有定義。