系统文件函数

stat函数

指针如果没有const一般表示传出参数,如果加const表示传入参数
struct stat

  • dev_t st_dev文件设备编号
  • ino_t st_ino节点
    inode号是唯一的,每个inode节点的大小一般是128字节活着256字节,一般文件每2KB就设置一个inode
  • mode_t st_mode文件类型和存取权限,16bite,4bite文件类型 4bit特殊权限位 3*4bit访问权限
  • nlink_t st_nlink文件的硬链接数目
  • uid_t st_uid用户ID
  • gid_t st_gid组ID
  • dev_t st_rdev若文件为设备文件,则为其设备编号
  • off_t st_size文件字节数
  • blksize_t st_blksize块大小(文件系统的I/O缓冲区大小)
  • blkcnt_t st_blocks快数
  • time_t st_atime最后一次访问时间
  • time_t st_mtime最后一次修改时间
  • time_t st_ctime最后一次改变时间:指属性,包括访问,修改内容,修改类型等

stat函数和lstat函数的区别:对于软链接,前者是穿透(追踪)函数,后者是不穿透(不追踪)函数

access测试文件是否有某种权限

chmod 改变文件权限

可以使用第3章strtol函数将字符串转化为数字

chown 改变文件所有者

可以查看passwd文件(详见手册第5章)

truncate函数

文件的截取和拓展

#include <unistd.h>
#include <sys/types.h>int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);

多出来的方式仍然是以空洞的方式储存

link函数

创建硬链接

#include <unistd.h>int link(const char *oldpath, const char *newpath);#include <fcntl.h>           /* Definition of AT_* constants */
#include <unistd.h>int linkat(int olddirfd, const char *oldpath,int newdirfd, const char *newpath, int flags);

symlink 函数

创建软链接

readlink 函数

读一个软链接

unlink 函数

如果是软链接,则删除软链接
如果是硬链接,则删除当前硬链接,硬链接数减一,当减为0时,释放数据块和inode
使用unlink可以制作临时文件:如果文件硬链接数为0,但有进程已经打开文件,并且持有文件描述符,则等该进程关闭文件时kernel才真正删除文件,因此可以先open|creat一个文件,然后再使用文件描述符操作该文件,同时使用unlink函数删去,则创造出了一个临时文件

每一次unlink其实是删除一个目录项(denty),当所有占用该文件的进程使用结束或者进程关闭文件才会失效

操作文件的时候需要注意文件指针,尤其是写操作以后想要读取的时候

rename函数

目录操作函数

chdir函数

相当于cd命令,改变的是所在进程的路径,而不是终端的路径

getcwd函数

相当于pwd命令,获取进程当前目录

mkdir函数

需要注意创建的目录需要有执行权限,否则无法进入目录

rmdir函数

删除一个空目录

opendir函数(下面开始变成手册第三章的函数了)

成功返回一个DIR指针,失败返回NULL

readdir函数

读取目录内容,返回一个结构体struct dirent

  • ino_t ino目录的inode
  • ff_t d_off目录文件开头到此目录进入点的位移
  • signed short int d_reclend_name的长度
  • unsigned char d_type 文件的类型

closedir函数

dup 和dup2

查阅手册第二章
用于复制文件描述符,可以让多个文件描述符指向同一个文件

dup(old fd)函数:返回一个文件描述符,指向旧文件描述符所指向的文件,返回的是所有未占用的文件描述符中最小的一个
dup2(old fd,new fd)函数:指向新的文件描述符,如果新文件描述符原本指向一个文件则将该文件释放,再指向旧文件描述符所指向的文件。如果new和old是同一个文件描述符则不会关闭。

虽然可能有多个文件描述符,但是只有一个文件指针

这里的文件覆盖并不是清空,而是在原来文件上面写

fcntl函数

改变已经打开的文件的属性

  • 复制一个现有的文件描述符
  • 获得/设置文件描述符标记
  • 获得/设置文件状态标记
int fcntl(int fd,,int cmd,long arg)

cmd=F_GETFLarg=0就可以,返回文件的状态flag=fcntl(fd,F_GETFL,0)
cmd=F_SETFLarg=flag|O_APPEND/O_NONBLOCK
O_APPEND在末尾追加

  • 获得/设置异步I/O所有权
  • 获得/设置记录锁

Linux命令【五】系统函数相关推荐

  1. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    [正文开始] 上文接<sed的流艺术之三>-linux命令五分钟系列之二十三 例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢? [rocrocket@rocrocket ...

  2. 《神探tcpdump第五招》-linux命令五分钟系列之三十九

    == [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...

  3. linux命令行使用ppt,linux命令行系统详解.ppt

    linux命令行系统详解.ppt (161页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 第2章 命令与示例 1为什么要学习命令?命令对于 ...

  4. Linux学习笔记——系统函数IO

    文章目录 标准C库IO函数工作流程 标准C库函数与Linux系统函数之间的关系 虚拟地址空间 系统函数IO open read 与 write lseek 标准C库IO函数工作流程 用 fopen 打 ...

  5. Linux命令之系统五大负载(监控脚本及问题详解)

    文章目录 一.I/O 1.监控脚本 2.I/O过高异常如何解决 二.网络流量 1.监控脚本 2.网络流量异常如何解决 三.硬盘 1.监控脚本 2.硬盘满了如何解决df -h 四.cpu 1.监控脚本 ...

  6. 《mount的艺术》-linux命令五分钟系列之十四

    在阅读本文之前,我假设你已经对Linux系统下的硬盘.光盘的设备命令规则有所了解,比如sda和sda1的关系,以及hda.sda.fd.cdrom等设备. === 1 我把U盘插到USB口上了,下一步 ...

  7. linux目录下多个文件行数比对函数 关键字遍历文件 linux命令写入C函数

    人,一定要有勇气和踏实的态度面对改变和选择!开发,零经验起步! 文件行数比对函数: 输入参数:接口文件绝对路径,日期(格式YYYYMMDD:20150716) 根据路径和日期,分别获取这add.del ...

  8. TIPTOP 4GL 命令及系统函数

    命令: 1.r.d2+ cimt170 调试代码 2.vi ds.sch 可直接编辑 (vi 文本编辑器) w 保存 :q! 退出 3.r.s2 ds 生成ds.sch schema新增table→生 ...

  9. 《作业控制系列》-“linux命令五分钟系列”之十

    很久没发这个系列了.一直在看perl.现在回归.因为发现所有的脚本的基础都是linux命令- === 通俗的讲,作业控制命令是用来控制一个一个任务的. 1 我想把updatedb命令(用于重新建立整盘 ...

  10. linux man 命令查询系统函数

     man的分卷号,分成很多部分,分别是: 1 用户命令, 可由任何人启动的. 2 系统调用, 即由内核提供的函数. 3 例程, 即库函数,比如标准C库libc. 4 设备, 即/dev目录下的特殊 ...

最新文章

  1. node后台fetch请求数据-Hostname/IP doesn‘t match certificate‘s altnames解决方法
  2. C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作
  3. 简单配置局域网FTP
  4. as_hash ruby_Ruby中带有示例的Hash.each_pair方法
  5. 8条体面的程序员偷懒技巧
  6. 修复40G的老IDE硬盘
  7. SpringCloud面试题及答案(2021年SpringCloud面试题大全带答案)
  8. 实时音视频质量评估方案
  9. [转]GNSS NMEA-0183协议解析
  10. 信创项目基础软件都包括哪些?你要了解
  11. 关于Quartus+Modelsim 门级仿真 Warning (vopt-2216) Cannot find instance 'NA' specified in sdf.的解决办法...
  12. python:使用 PythonMagick 生成 icon 图标
  13. UNITY NGUI IPHONEX完美适配
  14. java按键发出声音代码_用Java写的一个根据按键发声的程序,为什么只有前16次按键响...
  15. 麻将胡牌算法——C#
  16. TortoiseSVN (Subversion客户端) 使用手册(中文) (六)
  17. ​PDF转Excel转换器推荐
  18. cpu软改vista 驱动_在Windows 7、8或Vista中启动分配给特定CPU的应用程序
  19. 我的世界java版生存三叉戟_我的世界:三叉戟太难获得?教你做一个溺尸塔,三叉戟随便爆!...
  20. 入职五年回顾(十三) 2013年8月

热门文章

  1. WPFの操作文件浏览框几种方式
  2. Linux Shell——函数的使用
  3. coursera 《现代操作系统》 -- 第五周 同步机制(1)
  4. 不使用物理引擎,自己动手做真实物理的模拟投篮游戏
  5. oracle安装后新建数据库实例及配置
  6. ASP 调用dll(VB)及封装dll实例
  7. 继承之接口知识点和思考练习
  8. 萧山职称计算机考试培训,浙江萧山2017年职称计算机考试时间安排
  9. lisp 揭 院长_HISLISPACSRIS EMR系统简介
  10. android 书架菜单,Android入门3--做一个书架