- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我可以查看 linux 内核的 inode 结构中的哪些值来判断我当前正在查看的 inode 是目录还是常规文件?
我已经搜索了 inode 但似乎真的找不到一个看起来像我想要的成员,因为我使用的是旧内核版本,我将在下面发布结构 (2.6.24)
struct inode
{
struct hlist_node i_hash;
struct list_head i_list;
struct list_head i_sb_list;
struct list_head i_dentry;
unsigned long i_ino;
atomic_t i_count;
unsigned int i_nlink;
uid_t i_uid;
gid_t i_gid;
dev_t i_rdev;
unsigned long i_version;
loff_t i_size;
struct timespec i_atime;
struct timespec i_mtime;
struct timespec i_ctime;
unsigned int i_blkbits;
blkcnt_t i_blocks;
unsigned short i_bytes;
umode_t i_mode;
spinlock_t i_lock;
struct mutex i_mutex;
struct rw_semaphore i_alloc_sem;
const struct inode_operations *i_op;
const struct file_operations *i_fop;
struct super_block *i_sb;
struct file_lock *i_flock;
struct address_space *i_mapping;
struct address_space i_data;
struct list_head i_devices;
union {
struct pipe_inode_info *i_pipe;
struct block_device *i_bdev;
struct cdev *i_cdev;
};
int i_cindex;
__u32 i_generation;
unsigned long i_state;
unsigned long dirtied_when;
unsigned int i_flags;
atomic_t i_writecount;
void *i_private;
};
如有任何帮助,我们将不胜感激。
最佳答案
我相信这是 inode 的模式...
umode_t i_mode;
要访问该字段,请参阅 stat(2) 手册页:
The following POSIX macros are defined to check the file type using the st_mode field:
S_ISREG(m) is it a regular file?
S_ISDIR(m) directory?
S_ISCHR(m) character device?
S_ISBLK(m) block device?
S_ISFIFO(m) FIFO (named pipe)?
S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.)
S_ISSOCK(m) socket? (Not in POSIX.1-1996.)
这是来自 Linux driver for minix FS 的一些示例代码:
434 void minix_set_inode(struct inode *inode, dev_t rdev)
435 {
436 if (S_ISREG(inode->i_mode)) {
437 inode->i_op = &minix_file_inode_operations;
438 inode->i_fop = &minix_file_operations;
439 inode->i_mapping->a_ops = &minix_aops;
440 } else if (S_ISDIR(inode->i_mode)) {
441 inode->i_op = &minix_dir_inode_operations;
442 inode->i_fop = &minix_dir_operations;
443 inode->i_mapping->a_ops = &minix_aops;
444 } else if (S_ISLNK(inode->i_mode)) {
445 inode->i_op = &minix_symlink_inode_operations;
446 inode->i_mapping->a_ops = &minix_aops;
447 } else
448 init_special_inode(inode, inode->i_mode, rdev);
449 }
450
关于linux - 目录 inode 与常规文件 inode ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9960017/
我可以查看 linux 内核的 inode 结构中的哪些值来判断我当前正在查看的 inode 是目录还是常规文件? 我已经搜索了 inode 但似乎真的找不到一个看起来像我想要的成员,因为我使用的是旧
我试图了解 inode 位图和 inode 表之间的区别(来自 ext2 文件系统文档),但我不明白。谁能解释一下? 最佳答案 位图只占一个 block ,是一个0和1的序列,其中0表示对应的inod
我们使用 Amazon EBS 在 3 级目录结构中存储大量小文件 (<10KB)。 ~/lists# df -hFilesystem Size Used Avail Use
我正在创建一个简单的 debugfs里面的文件/sys/kernel/debug/test/testFile使用以下代码: pDebugfs = debugfs_create_dir(name, NU
我的 VPS (CentOS 6.3.8.13 Parallels Plesk Panel) 已达到 inodes 限制: [root@vps21157 tmp]# df -i Filesystem
我阅读了 minix 的 API,但仍然感到困惑,无法仅通过 inode 编号获得“真正的”inode 结构 我们只能用“stat”结构得到“inode number”,对吧?但是得到这个数字后,有没
我发现在大多数情况下,i_data 只是 i_mapping 的解引用数据,如下所示,为什么在一个 inode 结构中设置两个相同的值? crash> struct inode ffffffc073c
我想知道为什么以下代码无法工作: public static List cloneList(List list) { List result = new ArrayList(list.siz
我需要用 C/C++ 编写一个程序,要求用户输入一个 inode 编号,然后返回所有 inode header 字段和信息。我对linux系统和命令一点都不熟悉。我找到了一些命令并尝试了不同的东西,但
由于我们的文件系统实现仅将 inode 存储在内存中,因此我们不想浪费更多的 inode 缓存。 在VFS下,我们计划不将新的inode添加到inode cache hash talbe中,也不将其添
代码是: void ext2_read_inode (struct inode * inode) { struct buffer_head * bh; struct ext2_inod
根据 struct ext4_inode { ..... __le16 i_extra_isize; ..... } 鉴于我使用的 inode 大小 = 256 字节,我看到这可以用于存
我正在阅读有关第 6 版 unix 的文章,并且刚刚了解了 inode。我有以下问题: 假设我在一个目录中有一个文件,并且在其他地方有一个指向该文件的链接。我是否正确地说,如果我删除文件,inode
我了解文件描述符是用于识别文件的内核句柄,而文件的 inode 编号是指向具有有关文件的其他详细信息的结构的指针(如果我错了,请纠正我)。但我无法区分它们。 最佳答案 根本区别在于,inode 代表文
Linux 上的 inode 限制是按子目录还是按整个文件系统?我使用 ububtu 64 位服务器 9.10。 如果是目录限制,是否可以通过将文件拆分为多个子目录来解决 inode 限制? 最佳答案
我知道unix系统中的文件是由它们的inode来表示的。 作为用户,我可以访问这些值并更改它们吗? 也就是说,替换两个相邻 block 之间的值,这样就改变了文件? 我可以只覆盖中间的一个 block
因此,我的托管服务对我的服务器( inode )上的 INODES 有限制。每个目录/文件 = 1 个 INODE。这可能是将来的一个问题,因为我想在我的网站中实现文件共享。理论上我不能将文件数据存储
在 linux 上,ext4 分区上有一部电影,如果我打开电影并观看它,然后我移动或重命名电影。 在之前的缓存用完后,它需要从原始文件中读取更多的缓存,然后它仍然可以这样做。 问题是: 文件系统和 i
有人可以告诉我如何计算目录中文件的 inode 数量吗? 谢谢。 最佳答案 有一个inode每个目录,其中的每个文件一个。如果您对文件进行符号链接(symbolic link),则符号链接(symbo
我最近了解了 Unix inode 及其用途。特别是,我了解到 an.inode 在文件系统中是唯一的。 我的问题是:如果用户将 Micro SD 卡插入他们的 Android 设备,该卡会成为现
我是一名优秀的程序员,十分优秀!