• linux caccess方法介绍

    2017-02-15 09:38:13
    access函数检查调用进程是否可以对指定的文件执行某种操作 api: int access(const char * pathname, int mode) athname:需要检测的文件路劲名 mode:需要测试的操作模式 mode参数介绍: R_OK 测试读许可...

    1、函数介绍

    access函数检查调用进程是否可以对指定的文件执行某种操作

    api:

    int access(const char * pathname, int mode) 

    athname:需要检测的文件路劲名

    mode:需要测试的操作模式


    mode参数介绍:

    R_OK      测试读许可权  W_OK      测试写许可权  X_OK      测试执行许可权  F_OK      测试文件是否存在


    成功执行时,返回0。失败返回-1,errno被设为以下的某个值 
    EINVAL: 模式值无效 
    EACCES: 文件或路径名中包含的目录不可访问 
    ELOOP : 解释路径名过程中存在太多的符号连接 
    ENAMETOOLONG:路径名太长 
    ENOENT:路径名中的目录不存在或是无效的符号连接 
    ENOTDIR: 路径名中当作目录的组件并非目录 
    EROFS: 文件系统只读 
    EFAULT: 路径名指向可访问的空间外 
    EIO:输入输出错误 
    ENOMEM: 不能获取足够的内核内存 
    ETXTBSY:对程序写入出错



    2、代码测试


    3、结果展示


    展开全文
  • 2)函数int access(const char * pathname, int mode)3)形参pathname:需要检测的文件路劲名mode:需要测试的操作模式。4)函数返回值说明成功执行时,返回0。失败返回-1,errno被设为以下的某个值 EINVAL: 模式

    1.函数功能:

    检查调用进程是否可以对指定的文件执行某种操作。

    2.函数原型:

    1)函数头文件

    #include <stdio.h>
    #include <unistd.h>
    

    2)函数

    int access(const char * pathname, int mode)

    3)形参

    pathname:需要检测的文件路劲名

    mode:需要测试的操作模式。

    4)函数返回值说明

    成功执行时,返回0。失败返回-1,errno被设为以下的某个值 
    EINVAL: 模式值无效 
    EACCES: 文件或路径名中包含的目录不可访问 
    ELOOP : 解释路径名过程中存在太多的符号连接 
    ENAMETOOLONG:路径名太长 
    ENOENT:路径名中的目录不存在或是无效的符号连接 
    ENOTDIR: 路径名中当作目录的组件并非目录 
    EROFS: 文件系统只读 
    EFAULT: 路径名指向可访问的空间外 
    EIO:输入输出错误 
    ENOMEM: 不能获取足够的内核内存 
    ETXTBSY:对程序写入出错

    5)mode说明

    R_OK      测试读许可权
    W_OK      测试写许可权
    X_OK      测试执行许可权
    F_OK      测试文件是否存在
    

    3.函数实例

    #include <stdio.h>
    #include <unistd.h>
    
    int main(void)
    {
    if(access("test.txt", R_OK)==0)  printf("READ OK\n");
     if(access("test.txt", W_OK)==0)  printf("WRITE OK\n");
     if(access("test.txt", X_OK)==0)  printf("EXEC OK\n");
     if(access("test.txt", F_OK)==0)   printf("File exist\n");
    }
    



    展开全文
  • linux Caccess()

    2013-04-28 20:31:10
    int access(const char* path,int mode); 函数说明: mode可以有几种情况组合:R_OK、W_OK、X_OK和F_OK R_OK、W_OK、X_OK用来检查文件是否具有读取、写入和执行的权限; F_OK用来判断该文件是否存在。 如果一个...

    头文件:

    #include<unistd.h>

    原型:

    int access(const char* path,int mode);

    函数说明:

    mode可以有几种情况组合:R_OK、W_OK、X_OK和F_OK

    R_OK、W_OK、X_OK用来检查文件是否具有读取、写入和执行的权限;

    F_OK用来判断该文件是否存在。

    如果一个目录表示为可以写入,则表示可以在该目录建立新文件等操作。

    返回值:

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

    错误代码:

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

    范例: 

    #include<unistd.h>
    int main()
    {
        if(access("test",W_OK) == 0)
            printf("the file can be write\n");
    }
    

    cygwin下编译:

     gcc access.c -o access

    运行:./access

    展开全文
  • linuxaccess函数解析

    2013-08-02 17:08:03
    [lingyun@localhost access_1]$ ls access.c [lingyun@localhost access_1]$ cat access.c  /*********************************************************************************  * Copyright: (C) 201

    [lingyun@localhost access_1]$ ls
    access.c
    实例一:

    [lingyun@localhost access_1]$ cat access.c 
    /*********************************************************************************
     *      Copyright:  (C) 2013 fulinux<fulinux@sina.com> 
     *                  All rights reserved.
     *
     *       Filename:  access.c
     *    Description:  This file 
     *                 
     *        Version:  1.0.0(08/02/2013~)
     *         Author:  fulinux <fulinux@sina.com>
     *      ChangeLog:  1, Release initial version on "08/02/2013 04:10:44 PM"
     *                 
     ********************************************************************************/
    #include <stdio.h>
    #include <unistd.h>


    int main(void)
    {
        if(access("/etc/passwd", R_OK) == 0)
            printf("/etc/passwd can be read\n");
    }


    [lingyun@localhost access_1]$ gcc access.c 
    [lingyun@localhost access_1]$ ./a.out 
    /etc/passwd can be read
    [lingyun@localhost access_1]$ 


    实例二:

    [lingyun@localhost access_2]$ vim access.c
     + access.c                                                                                                                  
    /*********************************************************************************
     *      Copyright:  (C) 2013 fulinux<fulinux@sina.com> 
     *                  All rights reserved.
     *
     *       Filename:  access.c
     *    Description:  This file 
     *                 
     *        Version:  1.0.0(08/02/2013~)
     *         Author:  fulinux <fulinux@sina.com>
     *      ChangeLog:  1, Release initial version on "08/02/2013 04:18:45 PM"
     *                 
     ********************************************************************************/


    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>


    int main(int argc, char *argv[])
    {
        if(argc < 2)
        {
            printf("Usave: ./test filename\n");
            exit(1);
        }


        if(access(argv[1], F_OK) == -1)
        {
            puts("File not exists!");
            exit(2);
        }


        if(access(argv[1], R_OK) == -1)
            puts("You can't read the file!");
        else
            if(access(argv[1], R_OK|W_OK) != -1)
                puts("You can read and write the file");
            else
                puts("You can read the file");


        exit(0);
    }
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
     ~/apue/access/access_2/access.c[+]   CWD: /usr/local/src/lingyun/apue/access/access_2   Line: 41/42:12                      
    "access.c" [New] 42L, 1090C written


    [lingyun@localhost access_2]$ gcc access.c 
    [lingyun@localhost access_2]$ ./a.out /etc/passwd
    You can read the file
    [lingyun@localhost access_2]$ ./a.out access.c 
    You can read and write the file
    [lingyun@localhost access_2]$ 


    [lingyun@localhost access_3]$ vim access.c 
     + access.c                                                                                                                  
    /*********************************************************************************
     *      Copyright:  (C) 2013 fulinux<fulinux@sina.com> 
     *                  All rights reserved.
     *
     *       Filename:  access.c
     *    Description:  This file 
     *                 
     *        Version:  1.0.0(08/02/2013~)
     *         Author:  fulinux <fulinux@sina.com>
     *      ChangeLog:  1, Release initial version on "08/02/2013 04:10:44 PM"
     *                 
     ********************************************************************************/
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <err.h>


    int main(int argc, char *argv[])
    {
        if(argc != 2)
        {
            printf("usage: a.out <pathname>\n");
            exit(1);
        }
        if(access(argv[1], R_OK) < 0)
        {
            warn("access error for %s", argv[1]);
        }
        else
            printf("read access OK\n");
        if(open(argv[1], O_RDONLY) < 0)
        {
            warn("open error for %s", argv[1]);
        }
        else
            printf("open for reading OK\n");
        exit(0);
    }


    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
    ~                                                                                                                            
     ~/apue/access/access_3/access.c[+]   CWD: /usr/local/src/lingyun/apue/access/access_3   Line: 36/41:5                       
    "access.c" 41L, 1065C written


    [lingyun@localhost access_3]$ gcc access.c 
    [lingyun@localhost access_3]$ ./a.out 
    usage: a.out <pathname>
    [lingyun@localhost access_3]$ ./a.out access.c 
    read access OK
    open for reading OK
    [lingyun@localhost access_3]$ ls -l /etc/shadow
    ---------- 1 root root 1151 Jun  4 23:16 /etc/shadow
    [lingyun@localhost access_3]$ ./a.out /etc/shadow
    a.out: access error for /etc/shadow: Permission denied
    a.out: open error for /etc/shadow: Permission denied
    [lingyun@localhost access_3]$ sudo su
    [root@localhost access_3]# chown root a.out 
    [root@localhost access_3]# chmod u+s a.out 
    [root@localhost access_3]# ls -l a.out 
    -rwsr-xr-x 1 root trainning 7220 Aug  2 17:04 a.out
    [root@localhost access_3]# exit
    exit
    [lingyun@localhost access_3]$ ./a.out /etc/shadow
    a.out: access error for /etc/shadow: Permission denied
    open for reading OK
    [lingyun@localhost access_3]$ 


    展开全文
  • linux文件-access函数

    2018-08-24 23:24:58
    access函数: access函数主要用于在使用文件之前获取文件的属性以免错误的使用文件的权限,造成文件读写过程中出错; #include &lt;unistd.h&gt; int access(const char *pathname, int mode); 成功...

     access函数:

    access函数主要用于在使用文件之前获取文件的属性以免错误的使用文件的权限,造成文件读写过程中出错;

     #include <unistd.h>
    
           int access(const char *pathname, int mode);
    成功返回0,出错返回-1
    功能:检查是否可以对某文件进行某种操作
    
        F_OK 值为0,判断文件是否存在
        R_OK 值为4,判断对文件是否有读权限
        W_OK 值为2,判断对文件是否有写权限
        X_OK 值为1,判断对文件是否有读写权限

     坚持使用代码说话,编写access的函数并进行测试:

    编写函数file_access.c函数,并编译运行进行测试测试结果如下:

    andrew@andrew-Thurley:~/work/filedir$ ./a.out *
    7852 can read a.out
    7852 can write a.out
    7852 can rexcute a.out
    7852 can read bin
    7852 can write bin
    7852 can rexcute bin
    7852 can read date.txt
    7852 can write date.txt
    7852 can not  excute date.txt
    7852 can read include
    7852 can write include
    7852 can rexcute include
    7852 can read l_date
    7852 can write l_date
    7852 can not  excute l_date
    7852 can read obj
    7852 can write obj
    7852 can rexcute obj
    7852 can read src
    7852 can write src
    7852 can rexcute src
    7852 can read zieckey_fifo
    7852 can write zieckey_fifo
    7852 can rexcute zieckey_fifo
    

    file_access.c函数:

    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <string.h>
    
    
    int main(int argc, char *argv[])
    {
    
        if(argc < 2)
        {
            fprintf(stderr, "usage: %s files \n", argv[0]);
            exit(1);
        }
    
        int i;
        for(i = 1; i < argc;  i++)
        {
            if(access(argv[i], R_OK))
            {
                printf("%d can not read %s\n", getpid(),argv[i]);
            }
            else
            {
                printf("%d can read %s\n", getpid(), argv[i]);
            }
    
            if(access(argv[i], W_OK))
            {
                printf("%d can not write %s\n", getpid(),argv[i]);
            }
            else
            {
                printf("%d can write %s\n", getpid(), argv[i]);
            }
    
            if(access(argv[i], X_OK))
            {
                printf("%d can not  excute %s\n", getpid(),argv[i]);
            }
            else
            {
                printf("%d can rexcute %s\n", getpid(), argv[i]);
            }
        }
    
    
    
    
        return 0;
    }
    

     

      #include <fcntl.h>           /* Definition of AT_* constants */
           #include <unistd.h>
    
           int faccessat(int dirfd, const char *pathname, int mode, int flags);
    

     

     

     

     

     

     

    展开全文
  • linux access()函数和readdir()函数 1.1 access() access函数的原型如下: int access(const char *pathname, int mode); 此函数是用来获得调用进程对pathname所指向的文件(regular)或者是目录(directory)的...
  • linux caccess函数

    2017-04-22 10:55:08
    表头文件 #include定义函数int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性: 06 检查读写权限 04 ...
  • last access time:最后访问时间,文件的读、写、执行等都会改变文件的最后访问时间 last modify time:最后修改时间,文件的truncate、写等都会改变文件的最后修改时间。 last modify time:最后改变时间,改变...
  • Linux下,access函数的声明在<unistd.h>文件中,声明如下: int access(const char *pathname, int mode); access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可...
  • 函数功能 检查调用进程是否可以对指定的 文件/目录 执行某种操作。...int access(const char * pathname, int mode) 参数 pathname:需要检测的文件路劲名 mode:需要测试的操作模式。 mode说明: ...
  • RT,还可以保证跨平台,在win环境中也可以编译运行的方法,先谢谢各位了
  • linux Caccess的函数

    2017-07-31 19:00:46
    int access(const char *pathname, int mode); 函数功能: 1、查看指定路径下的文件是否存在。返回值F_OK 2、查看已经存在的文件的权限,返回值分别是R_OK,W_OK,X_OK,表示读 写 可执行的权限 实例: if...
  • access函数功能描述:检查调用进程是否可以对指定的文件执行某种操作。用法: #include &lt;unistd.h&gt;#include &lt;fcntl.h&gt;int access(const char *pathname, int mode); 参数: pathname:...
  • 1.C语言判断文件是否存在 用函数access,原型:   int access(const char *filename, int amode);amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 2.#include &lt;sys/stat.h...
  • linux Caccess函数

    2014-08-09 20:37:11
    access():判断是否具有存取文件的权限 相关函数  stat,open,chmod,chown,setuid,setgid 表头文件  #include 定义函数  int access(const char * pathname, int mode); 函数说明  access()会...
  • https://www.cnblogs.com/wangjian8888/p/7801409.html
  • access函数用来探测文件/目录权限, 我们先来看程序: #include #include int main() { char szTest[][100] = { "ls", "touch test", // 此时, test是文件 "chmod u-rwx test", "chmod u+r test", ...
1 2 3 4 5 ... 20
收藏数 164,090
精华内容 65,636