Linux命令【五】系统函数
系统文件函数
stat函数
指针如果没有const一般表示传出参数,如果加const表示传入参数
struct stat
dev_t st_dev
文件设备编号ino_t st_ino
节点
inode号是唯一的,每个inode节点的大小一般是128字节活着256字节,一般文件每2KB就设置一个inodemode_t st_mode
文件类型和存取权限,16bite,4bite文件类型 4bit特殊权限位 3*4bit访问权限nlink_t st_nlink
文件的硬链接数目uid_t st_uid
用户IDgid_t st_gid
组IDdev_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
目录的inodeff_t d_off
目录文件开头到此目录进入点的位移signed short int d_reclen
d_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_GETFL
,arg=0
就可以,返回文件的状态flag=fcntl(fd,F_GETFL,0)
cmd=F_SETFL
,arg=flag|O_APPEND/O_NONBLOCK
O_APPEND
在末尾追加
- 获得/设置异步I/O所有权
- 获得/设置记录锁
Linux命令【五】系统函数相关推荐
- 《sed的流艺术之四》-linux命令五分钟系列之二十四
[正文开始] 上文接<sed的流艺术之三>-linux命令五分钟系列之二十三 例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢? [rocrocket@rocrocket ...
- 《神探tcpdump第五招》-linux命令五分钟系列之三十九
== [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...
- linux命令行使用ppt,linux命令行系统详解.ppt
linux命令行系统详解.ppt (161页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 第2章 命令与示例 1为什么要学习命令?命令对于 ...
- Linux学习笔记——系统函数IO
文章目录 标准C库IO函数工作流程 标准C库函数与Linux系统函数之间的关系 虚拟地址空间 系统函数IO open read 与 write lseek 标准C库IO函数工作流程 用 fopen 打 ...
- Linux命令之系统五大负载(监控脚本及问题详解)
文章目录 一.I/O 1.监控脚本 2.I/O过高异常如何解决 二.网络流量 1.监控脚本 2.网络流量异常如何解决 三.硬盘 1.监控脚本 2.硬盘满了如何解决df -h 四.cpu 1.监控脚本 ...
- 《mount的艺术》-linux命令五分钟系列之十四
在阅读本文之前,我假设你已经对Linux系统下的硬盘.光盘的设备命令规则有所了解,比如sda和sda1的关系,以及hda.sda.fd.cdrom等设备. === 1 我把U盘插到USB口上了,下一步 ...
- linux目录下多个文件行数比对函数 关键字遍历文件 linux命令写入C函数
人,一定要有勇气和踏实的态度面对改变和选择!开发,零经验起步! 文件行数比对函数: 输入参数:接口文件绝对路径,日期(格式YYYYMMDD:20150716) 根据路径和日期,分别获取这add.del ...
- TIPTOP 4GL 命令及系统函数
命令: 1.r.d2+ cimt170 调试代码 2.vi ds.sch 可直接编辑 (vi 文本编辑器) w 保存 :q! 退出 3.r.s2 ds 生成ds.sch schema新增table→生 ...
- 《作业控制系列》-“linux命令五分钟系列”之十
很久没发这个系列了.一直在看perl.现在回归.因为发现所有的脚本的基础都是linux命令- === 通俗的讲,作业控制命令是用来控制一个一个任务的. 1 我想把updatedb命令(用于重新建立整盘 ...
- linux man 命令查询系统函数
man的分卷号,分成很多部分,分别是: 1 用户命令, 可由任何人启动的. 2 系统调用, 即由内核提供的函数. 3 例程, 即库函数,比如标准C库libc. 4 设备, 即/dev目录下的特殊 ...
最新文章
- node后台fetch请求数据-Hostname/IP doesn‘t match certificate‘s altnames解决方法
- C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作
- 简单配置局域网FTP
- as_hash ruby_Ruby中带有示例的Hash.each_pair方法
- 8条体面的程序员偷懒技巧
- 修复40G的老IDE硬盘
- SpringCloud面试题及答案(2021年SpringCloud面试题大全带答案)
- 实时音视频质量评估方案
- [转]GNSS NMEA-0183协议解析
- 信创项目基础软件都包括哪些?你要了解
- 关于Quartus+Modelsim 门级仿真 Warning (vopt-2216) Cannot find instance 'NA' specified in sdf.的解决办法...
- python:使用 PythonMagick 生成 icon 图标
- UNITY NGUI IPHONEX完美适配
- java按键发出声音代码_用Java写的一个根据按键发声的程序,为什么只有前16次按键响...
- 麻将胡牌算法——C#
- TortoiseSVN (Subversion客户端) 使用手册(中文) (六)
- ​PDF转Excel转换器推荐
- cpu软改vista 驱动_在Windows 7、8或Vista中启动分配给特定CPU的应用程序
- 我的世界java版生存三叉戟_我的世界:三叉戟太难获得?教你做一个溺尸塔,三叉戟随便爆!...
- 入职五年回顾(十三) 2013年8月