>  기사  >  운영 및 유지보수  >  Linux C 액세스 기능을 사용하는 방법

Linux C 액세스 기능을 사용하는 방법

藏色散人
藏色散人원래의
2023-03-27 10:46:491649검색

Linux C 액세스 함수의 기능은 파일의 액세스 권한을 결정하는 것입니다. 이 함수의 구문은 "int access(const char * pathname, int mode);"이며, 여기서 "pathname" 매개변수는 파일 경로를 나타냅니다. 감지해야 할 이름입니다.

Linux C 액세스 기능을 사용하는 방법

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

리눅스 C 접근 기능을 어떻게 사용하나요?

linux C 접근

【1】기능

파일 접근 권한 결정

【2】헤더 파일

#include <unistd.h>

【3】기능 정의

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

【4】매개변수 설명

경로명 : 탐지해야 할 파일의 경로명

모드 : 매개변수가 0 일때 파일이 존재하는지 확인한다는 뜻입니다. , 0을 반환하고 존재하지 않으면 -1을 반환합니다. 이 기능은 다른 파일 속성도 확인할 수 있습니다.

 06 읽기 및 쓰기 권한 확인

 04 읽기 권한 확인

 02 쓰기 권한 확인

 01 실행 권한 확인

 00 파일 존재 여부 확인

【5】반환 값

확인하려는 모든 권한이 확인을 통과한 경우 권한이 하나만 있으면 성공을 나타내는 0 값이 반환됩니다. 금지된 경우 -1 값이 반환되어 실패를 나타냅니다.

【6】함수 설명

Access()는 기존 파일을 읽고 쓸 수 있는지 확인합니다.

  매개변수 모드에는 R_OK, W_OK, X_OK 및 F_OK의 여러 조합이 있습니다.

  R_OK, W_OK 및 X_OK는 파일에 각각 읽기, 쓰기 및 실행 권한이 있는지 확인하는 데 사용됩니다. F_OK는 파일이 존재하는지 확인하는 데 사용됩니다.

access()는 권한만 확인하고 파일 형식이나 파일 내용은 고려하지 않기 때문에 디렉터리가 "쓰기 가능"으로 표시되면 새 파일 생성과 같은 작업이 해당 디렉터리에서 생성될 수 있음을 의미합니다. 디렉토리, 아님 이는 이 디렉토리가 파일로 처리될 수 있음을 의미합니다.

예를 들어, DOS 파일에는 모두 "실행 가능" 권한이 있지만 execve()로 실행하면 실패합니다.

【7】오류 코드

  EACCESS 경로명 매개변수에 지정된 파일이 테스트에 필요한 권한을 충족하지 않습니다.

 EROFS 쓰기 권한을 테스트할 파일이 읽기 전용 파일 시스템에 존재합니다.

  EFAULT 매개변수 경로명 포인터가 접근 가능한 메모리 공간을 초과했습니다.

 EINVAL 매개변수 모드가 올바르지 않습니다.

 ENAMETOOLONG 매개변수 경로명이 너무 깁니다.

  ENOTDIR 매개변수 경로명은 디렉터리입니다.

 ENOMEM 코어 메모리 부족

  ELOOP   参数pathname有过多符号连接问题。

  EIO I/O  存取错误。

【8】附加说明

    使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。

【9】范例

// 范例1
#include <unistd.h>
int main()
{
    if (access("/etc/passwd", R_OK) == 0)
        printf("/etc/passwd can be read\n");
    return 0;
}
// 范例2
#include 
#include <unistd.h>
int file_exists(char *filename);
int main(void)
{
    printf("Does NOTEXIST.FIL exist: %s\n",
    file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
    return 0;
}
int file_exists(char *filename)
{
    return (access(filename, 0) == 0);
}

【10】相关函数

stat,open,chmod,chown,setuid,setgid

推荐学习:《linux视频教程

위 내용은 Linux C 액세스 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.