C의 Fstat 함수

Cui Fstat Hamsu



fstat() 함수는 시스템을 호출하여 해당 파일의 설명자에 따라 달라지는 정보(일부 파일 관련)를 반환합니다. 이 함수는 'fildes'라고도 하는 파일 설명자와 관련된 파일에 대한 정보를 얻은 다음 버퍼가 가리키는 메모리 위치에 이 정보를 씁니다. 이 함수의 반환 유형은 정수입니다. 프로그램이 성공적으로 실행되면 '0' 값을 반환합니다. 그렇지 않으면 실행이 실패한 경우 함수에 '-1'을 반환합니다. 이 함수의 실행 오류는 함수의 fildes에 파일에 대한 잘못된 설명자가 있는 경우, 입력 및 출력에 대한 읽기 오류가 파일에서 발생하는 경우, 메모리 위치(구조)가 다음과 같은 특정 이유로 인해 발생할 수 있습니다. 버퍼가 파일 정보 쓰기를 가리키고 있으며 파일 크기에 대해 할당된 메모리가 충분하지 않습니다.

절차

이 문서는 파일 정보를 얻기 위해 fstat() 함수를 구현하는 순차적인 순서를 따릅니다. 먼저 이 함수의 구문인 이 함수에 필요한 매개변수를 배웁니다. 그런 다음 이 구문을 사용하여 fstat() 함수에 대한 몇 가지 예제를 실행합니다.







통사론

파일 정보에 대한 프로그램의 액세스를 가능하게 하는 fstat() 함수를 선언하는 방법은 다음 줄에 언급되어 있습니다.



$ #include
$ 정수 상태 ( 정수 필데스 , 구조체 통계 * 버프 ) ;

프로그램에서 함수를 호출해야 할 때마다 'sys/stat.h'로 이 함수를 지원하는 헤더 파일을 먼저 가져와야 합니다. 함수의 반환 유형은 항상 'int'이고 매개변수에는 데이터 유형이 'int'인 'fildes'가 포함됩니다. Fildes는 정보를 알고자 하는 파일에 대한 설명자입니다. 함수에 제공되는 또 다른 매개변수는 'buf' 포인터입니다. 파일에 대한 데이터를 저장하려는 구조를 가리키는 '구조체 통계' 포인터입니다. 이것은 fstat() 함수의 입력 매개변수에 대한 간략한 설명입니다.



예시

우리는 앞에서 언급한 설명을 사용하고 프로그램을 실행하여 프로그램을 통해 모든 / 특정 파일에 대한 정보를 얻습니다. 실행을 위해 Microsoft Visual Studio C 컴파일러에서 이 프로그램을 작성합니다. 먼저 프로젝트를 만든 다음 Visual Studio의 C 리포지토리에 추가하여 예제로 시작합니다. C 파일에 프로젝트를 추가하려면 프로젝트 이름과 함께 '.c'를 포함하고 프로젝트의 소스 파일에 추가합니다. 프로젝트 생성 후 다음 단계는 프로그램에서 나중에 사용할 수 있는 기능에 필요한 모든 라이브러리를 호출하는 것입니다. 이 글에서 fstat() 함수에 대한 예제를 구현하고 있으므로 'sys/stat.h' 헤더 파일을 포함해야 합니다. 파일 정보를 얻으려면 파일이 있는 장치 유형을 알아야 합니다. 장치의 데이터 유형을 알기 위해 'type.type' 헤더를 포함합니다. h” 프로그램에서.





파일 정보에는 파일을 마지막으로 연 시간과 파일에서 수정한 내용이 포함되어야 합니다. 이러한 시간 호출 기능에 액세스하기 위해 헤더 파일 'times.txt'를 추가합니다. h' 및 'fcntl. h” 파일 권한 기능에 대한 헤더입니다. 마지막 헤더 'stdio.h' h” 파일도 프로그램에 포함되어 있어 프로그램에서 printf() 및 scanf() 메서드를 호출합니다. 프로그램에 포함하기 위해 논의한 헤더 파일은 다음과 같습니다.

$ #include
$ #include
$ #포함
$ #include
$ #포함 <시간.h>

앞에서 언급한 헤더 파일을 프로그램으로 성공적으로 가져온 후 이제 특정 파일에 대한 정보를 가져오는 프로그램을 빌드합니다. 우리는 'main'이라는 이름과 함께 'int'로 반환 유형을 갖는 함수를 선언합니다. 이 메인 함수에 'char' 배열을 선언하고 정보를 알아야 하는 파일의 이름을 할당합니다. 그런 다음 '구조체' 데이터 유형으로 '통계 정보'를 정의합니다. 이 구조체는 파일에 대한 정보를 저장하는 장소입니다.



그런 다음 데이터 유형이 '정수'인 'file_descriptor'라는 이름의 다른 변수를 정의합니다. 'if 조건'에서 파일이 존재하는 경우 읽기 및 쓰기 작업에 대한 권한을 요청하고 'S_IWUSR'과 어레이 이름을 'create()' 함수에 전달하여 파일에 대한 권한을 요청합니다. 존재하거나 그렇지 않으면 새 파일을 만듭니다. 이 create() 함수를 'if 조건'에 전달하여 create() 함수 값이 0보다 작은 경우 파일을 생성해야 한다는 오류를 생성합니다. 'file_descriptor' 및 'information' 매개변수가 있는 fstat() 및 '파일 정보가 저장된 위치의 주소'가 0이 아닌 경우 파일의 정보인 fstat() 반환 값을 표시합니다. . 그리고 우리는 속성의 형태로 정보를 인쇄합니다. 파일이 저장된 장치 ID, 장치의 Inode 번호, 파일의 보호 모드, 사용자 ID, 그룹 ID 및 링크 번호(하드 형식).

이러한 속성을 표시한 후 명령문에서 나와 close() 메서드를 사용하여 파일을 닫습니다. 그런 다음, unlink() 메서드를 호출하여 파일의 연결을 해제합니다.

#include
#include
#포함
#include
#포함 <시간.h>

기본 ( ) {
정렬 [ ] = '앰프 파일' ;
구조체 통계 정보 ;
정수 파일 기술자 ;
만약에 ( ( 파일 기술자 = 만들어진 ( 정렬 , S_IWUSR ) ) < 0 )
오류 ( '생성() 오류' ) ;
또 다른 {
만약에 ( 상태 ( 파일 기술자 , & 정보 ) != 0 )
오류 ( 'fstat() 오류' ) ;
또 다른 {
넣어 ( 'fstat() 값:' ) ;
인쇄 ( ' 아이노드: %d \N ' , ( 정수 ) 정보. st_ino ) ;
인쇄 ( ' device_id: %d \N ' , ( 정수 ) 정보. st_dev ) ;
인쇄 ( ' 장치 모드: %08x \N ' , 정보. st_mode ) ;
인쇄 ( ' no_of_hard_links: %d \N ' , 정보. st_n링크 ) ;
인쇄 ( ' u_id: %d \N ' , ( 정수 ) 정보. st_uid ) ;
인쇄 ( ' g_id: %d \N ' , ( 정수 ) 정보. st_gid ) ;
}
닫다 ( 파일 기술자 ) ;
풀리다 ( 정렬 ) ;
}
}

프로그램은 먼저 파일 작업에 대한 권한에 액세스한 다음 그 안에 있는 데이터를 읽고 할당된 메모리 위치에 씁니다. 파일에서 표시하도록 프로그램에 부여한 속성이 출력에 표시됩니다.

결론

fstat() 함수를 사용하여 파일 정보에 액세스했습니다. 우리는 먼저 함수의 매개변수에 대한 완전한 설명과 함께 fstat() 함수의 구문을 배웠습니다. 그런 다음, 먼저 파일 소유자의 권한에 액세스한 다음 파일을 읽고 파일 정보에서 원하는 속성을 표시하는 이 기능을 위한 프로그램을 작성했습니다. 우리는 당신이 fstat()의 개념을 이해할 수 있도록 최선을 다했고 그것이 당신의 프로그램에 도움이 되기를 바랍니다.