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

Linux stat函数_python系统调用函数

---- 文章目录 1. inode节点与硬链接 2. stat函数与 struct stat 结构体 3. stat函数实例分析及stat命令 4....(非系统调用) *原型:struct tm *localtime(const time_t *timep); *参数:time_t类型,struct stat中time_t st_atime,这里应该是文件访问时间...(非系统调用) struct passwd *getpwuid(uid_t uid); 根据uid获取用户信息 struct passwd { char *pw_name; username char...穿透与非穿透 上面介绍了stat函数并通过stat函数实现了 ls -l 命令的功能。我们上面演示了使用自己实现的 ./mls 查看文件信息,假如说使用 ....那么我们自己如何实现获取符号链接的实际大小呢,这就用到了非穿透函数lstat,只要把上面代码实现中的函数调用stat替换为lstat就可以了,下面测试一下。

2.1K40

Linux函数系统调用

程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统调用 write() 函数,实现了终端信息的打印功能。 二、库函数函数可以理解为是对系统调用的一层封装。...所有 C 函数库是相同的,而各个操作系统系统调用是不同的。 函数库调用是调用函数库中的一个程序,而系统调用是调用系统内核的服务。...函数库调用是与用户程序相联系,而系统调用是操作系统的一个进入点 函数库调用是在用户地址空间执行,而系统调用是在内核地址空间执行 函数库调用的运行时间属于「用户」时间,而系统调用的运行时间属于「系统」时间...五、正确理解库函数高效于系统调用 首先解释,上述说明的库函数性能远高于系统调用的前提是,库函数种没有使用系统调用。再来解释下某些包含系统调用的库函数,然而其性能确实也要高于系统调用。...当一个进程正在运行,遇到读写文件操作,会发生一个中断,中断后系统会把当前用户进程的一些寄存器信息保存在内核堆栈中,接着去处理中断服务程序,这里是要去执行系统调用,Linux 中通过执行 int $0x80

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

    详解Linux系统调用fork()函数

    Linux系统中,fork()是一个非常重要的系统调用,它的作用是创建一个新的进程。...具体来说,fork()函数会在当前进程的地址空间中复制一份子进程,并且这个子进程几乎完全与父进程相同,包括进程代码、数据、堆栈以及打开的文件描述符等。...fork()函数的语法如下: #include pid_t fork(void); 其中,参数pid_t代表进程id,而fork()函数返回值则有以下两种情况: 如果返回0,表示当前进程是子进程...需要注意的是,fork()函数并不保证父进程和子进程的执行顺序。在fork()之后,操作系统可能会先执行父进程,也可能会先执行子进程,这完全取决于系统的调度算法。...需要注意的是,fork函数会返回两次,一次是在父进程中返回子进程的进程ID,一次是在子进程中返回0。

    1.1K30

    linux系统下fcntl函数解析与标准IO函数介绍

    -----今天是最后一篇文章关于linux系统下文件IO操作了,从明天起开始写文件属性的文章了,欢迎大家来学习,一起进步。(同时也欢迎大家批评指出错误,我会及时纠正过来的)。...标准IO是C库函数;而文件IO是linux系统的API,API类似于一种接口,是由操作系统提供的(说实话,在这之前,我这个人比较犟,好少会调用api,非得自己写一个函数,这样有的时候累的半死还不一定能够写出来...2、库函数比API还有一个优势就是:API在不同的操作系统之间是不能通用的,但是C库函数在不同操作系统中几乎是一样的。【所以C库函数具有可移植性而API不具有可移植性。...因此标准IO比文件IO性能要更高(这里的下一层是指硬件层存储区域,而我们的标准IO函数是应用层方面,它先向系统缓冲区操作,然后等待系统里面的write等函数操作,才把数据弄到硬件层上去)。...3、常用标准IO函数介绍: 常见的标准IO库函数有:fopen、fclose、fwrite、fread、ffulsh(刷新标准库函数的缓存,直接写进操作系统的缓冲区中)、fseek(其实在写这个的话,我自己也对这些函数的用法是一脸的懵逼

    1.3K41

    Linux系统下C++标准库函数

    参考链接: C++ vfscanf() 1、字符串函数  头文件:  #include   函数名作用isalnum()测试字符是否为英文字母或数字isalpha()测试字符是否为英文字母...以前i=16位 l=32位 atol()将字符串转换成长整型数 现在i=32位 l=64位atoll()将字符串转换成长整型数 ll=64位 部分系统不支持使用strtol()将字符串转换成整数strtoul...  1)Linux权限说明  Linux权限说明作用S 提权和降权设置用户权限s 修改我当前组设置组权限t仅所有者可删除权限r 4读取权限w 2写入权限x 1执行权限第一个字母表示d 表明是一个文件夹...l 表明是以一个连接 其他方式表明是一个普通文件第2-4个字母表示所有者的权限第5-7个字母表示所在组的权限第8-10个字母表示其他组的权限 对进程也是有效  对内存也是有效  Linux下 一切皆文件...  UID作用0 root最高权限1000~10000(不包含10000)system 数据库 服务 tty 保留的用户10000(包含10000)以上其他用户 Android 每个应用会分配一个用户(系统应用例外

    1.8K00

    Linux系统调用API】五、link系列函数

    1. link函数 包含头文件 #include 函数原型 int link(const char *oldpath, const char *newpath); 函数功能 link...函数参数 oldpath:源文件名(路径) newpath:硬链接文件名(路径) 函数返回值 成功返回0。On success, zero is returned....2. symlink函数 包含头文件 #include 函数原型 int symlink(const char *oldpath, const char *newpath); 函数功能...读取软链接,这个函数只能读取软链接,不能读取硬链接。 函数参数 path:连接名(路径) buf:缓冲区(缓存读出的数据) bufsiz:缓冲区大小 函数返回值 成功返回缓冲区被填充的大小。...(注意同名命令unlink,查询函数man手册时要加章节2) 函数参数 pathname:链接名,也可以是文件名 函数返回值 成功返回0。

    5910

    linux系统下lseek函数的详细用法

    ---前面的文章里面,仔细讲了在linux系统对文件的读写操作以及文件管理,为今天要讲的内容作了铺垫(如果您是刚接触这方面的内容,可以先看我之前写的文章,有错误的地方,还望指出来,在这里先说一声谢谢)。...这个指针不能被直接访问,linux系统用lseek函数来访问这个文件指针------当我们打开一个空文件时,默认情况下文件指针指向文件流的开始。所以这时候去write时写入就是从文件开头位置开始的。...二、从man手册来说lseek函数: 1、还是那句话,在linux系统下有问题,找男人(man手册),哈哈哈哈。...2、用lseekh函数计算文件长度: 1)linux中并没有一个函数可以直接返回一个文件的长度(因为不需要)。但是我们实际使用时经常会需要知道一个文件的长度,怎么办?...三、总结: 今天通过对lseek函数的学习,理解更加深刻了,其实还是那句话,在linux系统下用man手册来学习一个陌生函数时最好的办法了,只是说要有一定的英文水平(其实英文水平差,也不是阻碍学习的理由

    1.7K30

    Linux系统调用四、lseek()函数详解「建议收藏」

    not fount file name"); return -1; } int fd = open(argv[1], O_RDWR | O_CREAT); write(fd, "hello linux...read_size); /*STDIN_FILENO STDERR_FILENO*/ } close(fd); return 0; } 我们知道,在C语言中,字符串都是以 ‘\0’ 结尾的,比如 “hello linux...write(fd, "hello linux...", 15); 我们来测试下程序,首先明确一点,字符串会写入相应文件,但是不会打印在屏幕中,这个后面分析。...not fount file name"); return -1; } int fd = open(argv[1], O_RDWR | O_CREAT); write(fd, "hello linux...注:这里用到了一个函数叫做perror(),这个函数是用来打印错误信息的,我们在上面这些函数的返回值都可以看到一条,如果出错会设置errno,而设置errno就是和perror()函数相关联的,通过perror

    1.4K10

    Linux系统调用API】一、open与close函数

    一、系统API与C库函数的调用关系 当我们在C语言程序中调用一个库函数的时候,比如调用printf()函数,实际上它是通过文件指针来指向要打印的位置的。...并且,printf()函数会调用Linux系统函数write()函数(它是一个系统接口,也可以人工调用),write()函数再继续调用sys_write()函数(这个函数只能是操作系统去调用),sys_write...在系统API中,主要包含了这些函数:与文件IO相关的函数接口(比如open(),close(),write(),read()等);与文件属性相关的函数;与目录操作相关的函数;与目录遍历相关的函数;还有dup...这些函数都属于系统调用,可以通过命令 man 2 functionname 查看。...,只不过我们在平时的学习中可能很少用到,main的返回值是int类型的,main函数的参数在Linux下编程用的还是比较多的。

    12510

    linux系统下dup和dup2函数解析

    ----今天接着昨天的话题讲,在昨天的文章里面,我们讲到了文件共享有三种实现方式,其中一种实现方式就是我们今天要讲的dup和dup2函数来实现了;那么咋们也就不废话 了,直接直奔主题吧。...一、dup函数解析: 1)首先我对这个dup函数的用法也不熟,所以说用man手册来查,这是最好的学习方法(或者网上查,有一大波博客会有讲这个的用法,但就我个人而言,还是要养成自己去探索一个新东西的习惯)...: 1、相比于dup函数,dup2函数它的优势就是可以指定新的文件描述符的大小,用法比较灵活。...\n", fd2); close(fd1); return -1; } 2、dup2和dup函数一样对文件写操作都是接续写的,这里我就不做演示了,写法和dup函数一样。...上面的源代码链接:https://github.com/1121518wo/linux-/tree/master 三、Linux系统下管道符和重定向的学习补充: 这里可以参考刘遄老师写的<linux就该这么学

    93430
    领券