>백엔드 개발 >C++ >stat() 및 lstat()를 사용하여 Unix에 디렉터리가 있는지 확인하는 방법은 무엇입니까?

stat() 및 lstat()를 사용하여 Unix에 디렉터리가 있는지 확인하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-16 10:13:03357검색

How to Check if a Directory Exists in Unix Using stat() and lstat()?

Unix에서 디렉터리 존재 확인: stat() 및 lstat() 시스템 호출 활용

특정 디렉터리가 존재하는지 확인하는 것이 일반적인 작업입니다. 유닉스 프로그래밍에서. opendir()과 같은 함수는 오류 처리를 통해 디렉터리 존재를 나타낼 수 있지만 단순히 존재 여부를 확인하는 데는 이상적인 접근 방식이 아닐 수 있습니다. 이 문서에서는 stat() 및 lstat() 시스템 호출을 사용하여 이 작업을 수행하는 효율적인 방법을 제시합니다.

stat() 및 lstat()

stat() 및 lstat() 함수는 경로 이름을 기반으로 파일의 존재 및 유형에 대한 귀중한 정보를 제공합니다. opendir()과 달리 이러한 함수는 파일을 열지 않고 해당 속성에 대한 데이터를 수집합니다. stat()와 lstat()의 주요 차이점은 기호 링크를 처리하는 방법에 있습니다.

  • stat(): 기호 링크를 따라가며 링크된 개체에 대한 정보를 제공합니다.
  • lstat(): 심볼릭 링크 자체를 평가하여 자체 속성에 대한 정보를 제공합니다.

파일이 디렉터리인지 확인하려면 S_ISDIR() 매크로는 stat() 또는 lstat()와 함께 사용됩니다. 다음 코드 조각은 그 사용법을 보여줍니다.

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) {
    // Directory exists and is accessible
}

추가 파일 형식 검사

디렉터리 외에도 특정 S_IS* 매크로를 사용하여 다양한 다른 파일 형식을 확인할 수 있습니다. 전체 목록은 다음과 같습니다.

  • S_ISDIR — 디렉터리
  • S_ISREG — 일반 파일
  • S_ISCHR — 문자 장치
  • S_ISBLK — 블록 장치
  • S_ISFIFO — FIFO
  • S_ISLNK — 심볼릭 링크
  • S_ISSOCK — 소켓

이러한 매크로를 이해하면 Unix 프로그램에서 다양한 파일 형식 검사가 가능합니다.

위 내용은 stat() 및 lstat()를 사용하여 Unix에 디렉터리가 있는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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