首页 > 其他分享 >第八章读数笔记

第八章读数笔记

时间:2022-09-23 13:55:42浏览次数:57  
标签:文件 读数 int 笔记 char pathname 第八章 链接 mode

第八章读书笔记

8.1系统调用

  • 在操作系统中,进程以两种不同的模式运行,即内核模式和用户模式,简称Kmode和Umode。在Umode中,进程的权限非常有限。它不能执行任何需要特殊权限的操作。特殊权限的操作必须在Kmode下执行。系统调用(简称syscall)是一种允许进程进入Kmode以执行Umode不允许操作的机制。复刻子进程、修改执行映像,甚至是终止等操作都必须在内核中执行。

8.2系统调用手册页

  • 在Unix以及大多版本的Linux中,在线手册页保存在/usr/man/目录中(Goldt等1995;Kerrisk 2010,2017)。而在Ubuntu Linux中,则保存在/usr/share/man目录中。man2子目录中列出了所有系统调用手册页。sh命令man 2 NAME显示了系统调用名称的手册页。
    例如:

简单的系统调用

  • access: 检查对某个文件的权限
    int access(char *pathname, int mode);
  • chdir: 更改目录
    int chdir(const char *path);
  • chmod:更改某个文件的权限
    int chmod(char *path, mode_t mode);
  • chown:更改文件所有人
    int chown(char *name,int uid,int gid);
  • chroot:将(逻辑)根目录更改为路径名
    int chroot(char *pathname);
  • getewd:获取CWD的绝对路径名
    char *getcwd(char *buf, int aize);
  • mkdir:创建目录
    tnt mkdir(char *pathname,mode_t mode);
  • rmdir:移除目录(必须为空)
    int rmdir(char *pathname);
  • link:将新文件名硬链接到旧文件名
    tnt 1ink(char *o1dpath,char *newpath);
  • umlink:减少文件的链接数;如果链接数达到0,则删除文件
    int unlink(char *pathname);
  • symlink:为文件创建一个符号链接
    int symlink(char *o1dpath, char*newpath);
  • rename:更改文件名称
    int rename (char *oldpath, char *newpath);
  • utime:更改文件的访问和修改时间
    int utime(char *pathname, struct utimebuf *time)

以下系统调用则要用到超级用户权限

  • mount: 将文件系统添加到挂载点目录上
    int mount(char *specialfile, char *mountDir);
  • umount: 分离挂载的文件系统
    int umount(char *dix);
  • mknod: 创建特殊文件
    int mknod(char *path,int mode, int device);

常用的系统调用

  • stat: 获取文件状态信息
点击查看代码
int stat(char *filename, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(char *filename, struct stat *buf);

  • open:打开一个文件进行读、写和追加
    int open(char *file, int flags,int mode)
  • close:关闭打开的文件描述符
    int close(int fd);
  • read:读取打开的文件描述符
    int read(int fd, char buf[], int count);
  • write:写入打开的文件描述符
    int write(int fd, char buf[], int count);
  • lseek:重新定位文件描述符的读/写偏移量
    int lseek(int fd, int offset, int whence);
  • dup:将文件描述符复制到可用的最小描述符编号中
    int dup(int oldfd);
  • dup2:将oldfd复制到newfd中,如果文件链接数为0,则删除文件
    int dup2(int oldfd, int newfd);
  • link:将新文件硬链接到旧文件
    int link(char *oldPath, char *newPath);
  • unlink:取消某个文件的链接;如果文件链接数为0,则删除文件
    int unlink(char *pathname);
  • symlink:创建一个符号链接
    int symlink(char *target, char *newpath);
  • readlink:读取符号链接文件的内容
    int readlink(char *path, char *buf, int bufsize);
  • umask:设置文件创建掩码;文件权限为(mask & ~umask)
    int umask(int umask);

标签:文件,读数,int,笔记,char,pathname,第八章,链接,mode
From: https://www.cnblogs.com/wdys12138/p/16722462.html

相关文章

  • Vue学习笔记
    模板语法条件渲染列表渲染//使用v-for指令<template><div><ul><liv-for="iteminnewsList":key="item.id">{{item.title}}</li></ul>......
  • 【学习笔记】Vins-Mono论文阅读笔记(三)
    VINS的整个VIO的实现方法,也就是对应的esimator部分的代码内容。理论部分主要介绍三种因子(IMU预积分因子、视觉因子和边缘化因子)的残差构造及雅克比推导VINS的VIO是基于紧......
  • JVM学习笔记记录
    目录JVM学习记录一、什么是JVM1.1、定义:1.2、优点1.3、JVM、JRE和JDK区别二、内存结构2.1、整体结构2.2、程序计数器2.3、虚拟机栈问题辨析内存溢出线程运行诊断3、本地方......
  • Java基础(学习笔记非本人纯原创)
    Java学习Java基础语法一、注释:注释的说明:1、注释是在程序指定位置添加的说明信息(例如衣服的吊牌等)2、注释不参与程序运行,仅起到说明作用注释的分类://......
  • uniapp学习笔记-transition过渡动画切换卡顿的问题
    //主页分页面1分页面2 发现从主页跳转到1和2页面不存在动画卡顿,不过1和2之间切换存在卡顿,猜测可能是动画都是zoomin个人探索的解决方法:先切换到......
  • 图数据库学习笔记
    目录图数据库学习笔记图数据库简介什么是图数据库图数据库如何表达数据示例应用场景社交网络应用实时推荐地理空间管理主数据管理(MasterDataManagerment)网络和数据中心管......
  • vue学习笔记(五):组件的重用
    父组件代码:放在views文件夹中<template><div><h1>父组件</h1><!--指定type和size,传值给组件--><mybuttontype="fail"size="middle">按......
  • 【笔记】搜索
    题单简单记录一下较典型的\(\text{or}\)较有思维含量的题。0X00P1123取数游戏考虑从上往下,从左往右依次取数。每次取完一个数将其标记掉,然后下次取前看周围八个是否......
  • ansible 笔记
    ansible基于ssh  主要组成部分  安装yum安装需要先安装epel源:yuminstall-yhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ......
  • Jenkins 20220922笔记本2
                                  ......