• 《Unix&Linux系统编程》第八章学习笔记


    第8章 使用系统调用进行文件操作

    8.1 系统调用

    简称syscall,是一种允许进程进入Kmode以执行Umode不允许操作的机制。

    8.2 系统调用手册页

    在Ubuntu Linux中,手册页保存在/usr/share/man目录中,man2子目录中列出了所有的系统调用手册页。

    • man 2 NAME :显示系统调用名称的手册页

    8.3 使用系统调用进行文件操作

    系统调用必须由程序发出,用法就像函数调用。每个系统调用都是一个库函数,它汇集系统调用参数,并最终向操作系统内核发出一个系统调用。

    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);
    

    8.4 常用的系统调用

    • stat:获取文件状态信息

    • open:打开一个文件进行读、写、追加

    • close:关闭打开的文件描述符

    • read:读取打开的文件描述符

    • write:写入打开的文件描述符

    • lseek:重新定位文件描述符的读/写偏移量

    • dup:将文件描述符复制到可用的最小描述符编号中

    • dup2:将oldfd复制到newfd中,如果newfd已打开,先将其关闭

    • link:将新文件硬链接到旧文件

    • unlink:取消某个文件的链接,如果文件链接数为0,则删除文件

    • symlink:创建一个符号链接

    • readlink:读取符号链接文件内容

    • umask:设置文件创建掩码,文件权限为(mask&~umask)

    8.5 链接文件

    (1)硬链接文件

    命令:

    ln oldpath newpath 
    

    (创建从newpath到oldpath的硬链接)
    系统调用:

    link(char *oldpath,char *newpath)
    unlink(char *pathname)
    

    (2)符号链接文件
    命令:

    ln -s oldpath newpath
    

    系统调用:

    symlink(char *oldpath,char *newpath)
    

    8.6 stat系统调用

    • stat文件状态
      stat按文件名统计指向文件,并在缓冲区中填写stat信息
    • stat结构体
    • stat与文件索引节点
      每个索引节点在存储设备上都有唯一的索引节点编号(ino)
    • 文件类型和权限
      st_mode是16位,前4位是文件类型,接下来的3位表示文件的特殊用法,其余9位是文件保护权限位。
    • opendir-readdir函数
    • readlink函数
    • ls程序
  • 相关阅读:
    EF6的DbContext动态连接字符串
    Swagger配置
    Xamarin学习资源收集
    xmarin开发问题收集
    javascript基础
    Vue3.0到底带来来哪些变化视频笔记1
    Git操作
    EFCore 通过数据库生成模型
    Web Deploy远程发布
    ASP.NET CORE系列【七】分析NetCore启动原理
  • 原文地址:https://www.cnblogs.com/weihehahaha/p/16728868.html
Copyright © 2020-2023  润新知