• 12、【Linux系统编程】access函数


    1、介绍

             头文件:#include < unistd.h>
      定义函数:int access(const char * pathname, int mode);
      函数说明:access()会检查是否可以读/写某一已存在的文件

    2、参数mode 有几种情况组合

      1、R_OK, W_OK, X_OK和F_OK. R_OK, W_OK 与X_OK 用来检查文件是否具有读取写入和执行的权限。
      2、F_OK 则是用来判断该文件是否存在。由于access()只作权限的核查, 并不理会文件形态或文件内容,因此,如果一目录表示为”可写入”,表示可以在该目录中建立新文件等操作,而非意味此目录可以被当做文件处理。例如:你会发现DOS 的文件都具有”可执行”权限,但用execve()执行时则会失败。

    3、返回值

      若所有欲查核的权限都通过了检查则返回0 值,表示成功,只要有一权限被禁止则返回-1。

    4、错误代码

       1、EACCESS 参数pathname 所指定的文件不符合所要求测试的权限.
      2、EROFS 欲测试写入权限的文件存在于只读文件系统内.
      3、EFAULT 参数pathname 指针超出可存取内存空间.
      4、EINVAL 参数mode 不正确.
      5、ENAMETOOLONG 参数pathname 太长.
      6、ENOTDIR 参数pathname 为一目录.
      7、ENOMEM 核心内存不足
      8、ELOOP 参数pathname 有过多符号连接问题.
      9、EIO I/O 存取错误.

    【实例】

    main.c

     1 #include <sys/types.h>
     2 #include <sys/stat.h>
     3 #include <time.h>
     4 #include <stdio.h>
     5 #include <stdlib.h>
     6 #include <unistd.h>
     7 
     8 int main(int argc, char *argv[])
     9 {
    10     //R_OK 是否有读权限
    11     //W_OK 是否有写权限
    12     //X_OK 是否有执行权限
    13     //F_OK 测试一个文件是否存在
    14     if(access("abc",F_OK) <0)
    15     {
    16         perror("abc");
    17         exit(1);
    18     }
    19 
    20     printf("abc is ok
    ");
    21 
    22     return 0;
    23 }

    更多文件操作的函数,参见https://blog.csdn.net/FadeFarAway/article/details/53968075

  • 相关阅读:
    近来无聊 写了一个google音乐的下载器
    HTML编辑器 HtmlArea
    Html编辑器 TinyMCE
    IE浏览器自定义地址协议 通过B/S程序中打开C/S程序
    html 元素的 onpropertychange 事件
    asp.net 服务器控件防止重复提交表单
    用 BindingSource 绑定窗体中控件不失去焦点无法更新数据源的问题
    动态创建大量 html dom 元素时提升性能
    很黄的日期格式化。。。
    Asp.net 导出 .html,.txt 等格式的文件
  • 原文地址:https://www.cnblogs.com/Long-w/p/9437622.html
Copyright © 2020-2023  润新知