zoukankan      html  css  js  c++  java
  • 其他系统调用

    其他系统调用

    stat

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    
    int stat(const char *path, struct stat *buf);
    int lstat(const char *pathname, struct stat *buf);
    功能:
        获取文件状态信息
        stat和lstat的区别:
            当文件是一个符号链接时,lstat返回的是该符号链接本身的信息;
            而stat返回的是该链接指向的文件的信息。
    参数:
        path:文件名
        buf:保存文件信息的结构体
    返回值:
        成功: 0
        失败: -1
    

    struct stat结构体说明:

    struct stat {
        dev_t           st_dev;     //文件的设备编号
        ino_t           st_ino;     //节点
    重要 mode_t          st_mode;            //文件的类型和存取的权限
        nlink_t         st_nlink;       //连到该文件的硬连接数目,刚建立的文件值为1
        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;       //最后一次改变时间(指属性)
    };
    

    st_mode(16位整数)参数说明

    文件类型判断应使用宏函数 :

    access

    #include <unistd.h>
    
    int access(const char *pathname, int mode);
    功能:测试指定文件是否具有某种属性
    参数:
        pathname:文件名
        mode:文件权限,4种权限
            R_OK:   是否有读权限
            W_OK:   是否有写权限
            X_OK:   是否有执行权限
            F_OK:   测试文件是否存在
    返回值:
        0:  有某种权限,或者文件存在
        -1:没有,或文件不存在
    

    chmod

    #include <sys/stat.h>
    
    int chmod(const char *pathname, mode_t mode);
    功能:修改文件权限
    参数:
        filename:文件名
        mode:权限(8进制数)
    返回值:
        成功:0
        失败:-1
    

    truncate函数

    #include <unistd.h>
    #include <sys/types.h>
    
    int truncate(const char *path, off_t length);
    功能:修改文件大小
    参数:
        path:文件文件名字
        length:指定的文件大小
            a)比原来小, 删掉后边的部分
            b)比原来大, 向后拓展
    返回值:
        成功:0
        失败:-1
    
    #include <unistd.h>
    int link(const char *oldpath, const char *newpath);
    功能:创建一个硬链接
    参数:
        oldpath:源文件名字
        newpath:硬链接名字
    返回值:
        成功:0
        失败:-1
       
    #include <unistd.h>
    int symlink(const char *target, const char *linkpath);
    功能:创建一个软链接
    参数:
        target:源文件名字
        linkpath:软链接名字
    返回值:
        成功:0
        失败:-1
    

    rename

    #include <stdio.h>
    int rename(const char *oldpath, const char *newpath);
    功能:把oldpath的文件名改为newpath
    参数:
    oldpath:旧文件名
    newpath:新文件名
    返回值:
    成功:0
    失败:-1
    

    dup函数

    #include <unistd.h>
    int dup(int oldfd);
    
    • 功能:
      通过 oldfd 复制出一个新的文件描述符,新的文件描述符是调用进程文件描述符表中最小可用的文件描述符,最终 oldfd 和新的文件描述符都指向同一个文件。
    • 参数:
      oldfd : 需要复制的文件描述符 oldfd
    • 返回值:
      成功:新文件描述符
      失败: -1

    dup2函数

    #include <unistd.h>
    int dup2(int oldfd, int newfd);
    
    • 功能:
      通过 oldfd 复制出一个新的文件描述符 newfd
    • 参数:
      oldfd : 需要复制的文件描述符
      newfd : 新的文件描述符(0-1023),若被占用,系统先解除与原文件关联,再与oldfd指向的文件关联
    • 返回值:
      成功:返回 newfd
      失败:返回 -1

    示例:

  • 相关阅读:
    C++ assert()断言
    libcurl API:CURLOPT_REFERER的用法
    hdu 2821 Pusher (dfs)
    快速找到跟踪其他session产生的trc文件
    10635
    pat 1055 区间前k个
    闲话Cache:始篇
    闲话缓存:算法概述
    instance 怎么获得自己的 Metadata
    通过 dhcp-agent 访问 Metadata
  • 原文地址:https://www.cnblogs.com/rookiezjz/p/15810682.html
Copyright © 2011-2022 走看看