首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

stat()函数_stat函数返回值

大家好,又见面了,我是你们的朋友全栈君。 在 linux 中,经常需要获取文件的属性,比如修改时间,文件大小等等。stat 函数将会帮助我们得到这些信息。...1 stat 函数 1.1 stat 函数的作用 linux 中,可以使用 stat 函数来获取文件相关的信息,就比如说文件的大小,文件的类型等等。...1.2 struct stat 结构体 stat 函数将获取到的结果保存到一个名为 struct stat 的结构体中。...函数原型 int stat(const char *pathname, struct stat *buf); stat 函数的第一个参数是目标文件的路径。...参考 3.1 中的文件查找流程,stat 可以很容易的从 inode 结构体中获取。比如 st_mode 字段来源于 inode 的 i_mode 字段等等。

3.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么ps中CPU占用率会有超出%100的现象?

    前面的关于ps中的%CPU的含义一文已经介绍了CPU占用率的含义,那么为什么有时会在ps的输出中看到CPU占用率超出%100的现象呢?...在fs/proc/array.c中定义了下面两个函数 int proc_tgid_stat(struct task_struct *task, char *buffer) {     return do_task_stat...的代码就知道这个参数的含义了: static int do_task_stat(struct task_struct *task, char *buffer, int whole) {        ....这样就可以解释为什么%CPU字段有超过100%了,因为分子是这个进程(线程组)中所有线程运行的时间,而在同一时刻,同一线程组中的两个不同线程可能在两个不同的CPU上运行,这样总的运行时间就有可能超过物理上真正过去的时间...执行ps aux时是按进程输出的,但是如果这个进程中还有其他线程,它的stat字段有一个l, 比如firefox [root@localhost 3013]# ps aux|grep firefox-bin

    2.2K20

    自己动手写数据库:视图元数据管理,统计元数据管理

    在数据库中,除了数据表外,还有一个重要对象叫视图。视图是由SQL语句将不同字段从不同表中抽取或者构造后形成的新表,跟数据库表不同在于,它不存储在磁盘上,而是在使用时临时构建出来。...统计信息一般包含当前有多少条记录,字段在磁盘中的分布信息等,这些数据在引擎执行查询时用于估计成本,统计信息处理的好能大大加快查询速度。...如果是商用数据库,这些信息将会多如牛毛,我们这里简单起见就保持三种数据即可,他们分别是每个表使用了多少区块,每个表包含了多少条记录,对于某个表中的某个字段,它有多少个不重复的值。...我们看看统计元数据的实现,在当前目录增加一个文件名为stat_manager.go,实现代码如下: package metadata_manager import ( rm "record_manager...最后我们使用一个名为MetaDataManager的对象将前面实现的所有Manager统一管理起来,在目录中创建meta_manager.go实现代码如下: package metadata_manager

    40520

    Unix-Linux编程实践教程-chapter03-ls

    第三章 目录与文件属性:编写ls 磁盘上有文件和目录,文件和目录都有目录和属性.文件的内容可以是任意的数据, 目录的内容只能是文件名或者子目录名的属性 目录中的文件名和子目录名指向文件和其他的目录,内核提供了系统调用来读取目录的...内容,读取和修改文件的属性 文件类型,文件的访问权限和特殊属性被编码存储在一个16位整数中,可以通过 掩码技术来读取这些信息 文件所有者和组信息是以ID的形式保存的,它们与用户名和组名的联系保存在 passwd...和group数据库中 自己编写ls,需要掌握三点: 如何读取目录的内容 如何读取并显示文件的属性 给出一个名字,如何判断是目录还是文件 把多种信息编码到不同的字段是一种常用的技术,如电话号码,IP字段等...为了比较,把不需要的地方置为0,这种技术称为掩码 将二进制数的每三位分为一组来操作,这就是八进制 结构stat 中的st_mode 成员包含16位,其中四位用作文件类型,九位用作许可权限, 剩下的三位用作文件特殊属性...> void do_ls(char []); void dostat(char *); void show_file_info(char *, struct stat *); void mode_to_letters

    40810

    Linux下ls命令显示符号链接权限为777的探索

    关于fileinfo结构体源码中已经给了很好的注释,其中struct stat类型的变量stat具体描述了文件的信息,往往由stat()或lstat()函数返回。...struct stat类型的定义可以在Linux源码include\uapi\asm-generic中找到,可以看出新版本64位中与常见文档中相比增加了许多pad填充,并将类型的一些宏定义取消了,直接采用了...115 unsigned short i_opflags;//2.6内核中没有的字段,哪里去找这个字段注释?...inode索引节点对象的getattr方法,再用generic_fillattr填充到返回的stat中,stat->mode=inode->i_mode。...如下图所示,符号链接inode中的mode值确实为0120777。这会不会有什么安全隐患,为什么要这样设计? ?

    6.6K50

    【Linux】重定向与缓冲区

    它们用于查询文件或目录的元数据,返回一个 struct stat 结构,结构中包含了该文件的详细信息。 这三个函数的区别在于它们如何访问文件,特别是在涉及符号链接(symlinks)时的行为。...buf:指向一个 struct stat 结构体,该结构体将被填充上文件的状态信息。 成功:返回 0,并将文件的状态信息存储到 buf 中。...结构体 这三个函数都将文件的状态信息存储到 struct stat 结构体中。...常见的字段如下: struct stat { dev_t st_dev; // 设备ID ino_t st_ino; // inode号 mode_t...为什么需要缓冲区 在计算机系统中,数据的读写速度通常是不均衡的: CPU 的处理速度 远快于 磁盘 I/O 和 网络 I/O。 内存访问速度 远快于 硬盘读写速度。

    5710

    Linux内核的内存管理与漏洞利用案例分析

    Slab是一个或者多个连续页组成的内存空间,那么本质上指向一个Slab的数据结构不是别的,就是struct page *,对应Slab中的信息可以通过第一个page的某些字段描述。...为什么叫做node?其实这是NUMA系统中的node概念。NUMA是为了多核优化而产生的架构,可以令某个CPU访问某段内存的速度更快。...个数 通过lru字段索引链表中的下一个/前一个page 前三点没什么好说的,大家都差不多。...需要关注的是第四点,这里不像cpu partial那样通过next指针连接页表,而是通过lru字段: struct page { ... /* * Third double word...案例2:CVE-2018-9568(WrongZone)漏洞利用 这里不涉及漏洞的详细细节,只需要知道这个漏洞的核心是类型混淆,即Slab-A中分配的对象,错误地用Slab-B进行了释放(这也是为什么这个漏洞名为

    1.2K20

    MIT 6.S081 教材第八章内容 -- 文件系统 -- 02

    字段nlink统计引用此inode的目录条目数,以便识别何时应释放磁盘上的inode及其数据块。 字段size记录文件中内容的字节数。 addrs数组记录保存文件内容的磁盘块的块号。...ref字段统计引用内存中inode的C指针的数量,如果引用计数降至零,内核将从内存中丢弃该inode: // in-memory copy of an inode struct inode { uint...struct { struct spinlock lock; struct inode inode[NINODE]; } icache; 每个内存中的inode都有一个包含睡眠锁的lock字段,...最后,每个inode都包含一个nlink字段(在磁盘上,如果已缓存则复制到内存中),该字段统计引用文件的目录项的数量;如果inode的链接计数大于零,xv6将不会释放inode。...网络文件系统和用户级文件系统提供了将这些调用转换为网络RPC并在返回之前等待响应的函数。---- 练习 为什么要在balloc中panic?xv6可以恢复吗? 为什么要在ialloc中panic?

    52541

    Linux之基础IO

    访问文件时,是用底层的open系统调用接口,它访问文件需要用到文件描述符,在C语言中,我们访问文件用的是FILE而不是文件描述符,因此可以推测出,FILE中必定有一个文件描述符的字段。...2.理解 为什么文件描述符是0,1,2,3……这些整数?它的本质是什么? 文件描述符的本质是数组的下标。...OS为了管理被打开的文件,构造了struct file结构体用来描述被打开的文件,为了管理进程与文件之间的联系,进程创建了struct file_struct结构,里面包含了struct file* fd_array...[]指针数组,它存储了描述被打开文件的结构体对象的地址,将进程对应的struct file_struct对象存放在进程的PCB中。...重定向的本质就是,上层使用的fd不变,在内核中修改了fd对应的struct_file*的地址。

    19430

    Linux内存描述之内存区域zone--Linux内存管理(三)

    系统中每个节点被链接到一个以NULL结尾的pgdat_list链表中,而其中的每个节点利用pg_data_tnode_next字段链接到下一节.而对于PC这种UMA结构的机器来说, 只使用了一个成为contig_page_data...任何种类的数据页都可以存放在任页框中, 没有任何限制. 但是Linux内核又把各个物理内存节点分成个不同的管理区域zone, 这是为什么呢?...高速缓冲分为行, 每一行负责不同的内存区.内核使用ZONE_PADDING宏生成”填充”字段添加到结构中, 以确保每个自旋锁处于自身的缓存行中 ZONE_PADDING宏定义在include/linux...ZONE_FAIR_DEPLETED 公平区策略耗尽(没懂) 4.4 内存域统计信息vm_stat 内存域struct zone的vm_stat维护了大量有关该内存域的统计信息....per_cpu_pageset具有一个字段, 该字段 struct per_cpu_pages则维护了链表中目前已有的一系列页面, 高极值和低极值决定了何时填充该集合或者释放一批页面, 变量决定了一个块中应该分配多少个页面

    9.5K31
    领券