반응형
○ 헤더 및 함수
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *statbuf);
int fstat(int fd, struct stat *statbuf);
int lstat(const char *pathname, struct stat *statbuf);
- 리턴 값
0 : 성공
-1 : 에러
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
○ stat 구조체 설명
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* Inode number */
mode_t st_mode; /* File type and mode */
nlink_t st_nlink; /* Number of hard links */
uid_t st_uid; /* User ID of owner */
gid_t st_gid; /* Group ID of owner */
dev_t st_rdev; /* Device ID (if special file) */
off_t st_size; /* Total size, in bytes */ // 파일 크기 (바이트 단위)
blksize_t st_blksize; /* Block size for filesystem I/O */
blkcnt_t st_blocks; /* Number of 512B blocks allocated */
/* Since Linux 2.6, the kernel supports nanosecond
precision for the following timestamp fields.
For the details before Linux 2.6, see NOTES. */
struct timespec st_atim; /* Time of last access */ // 마지막 액세스 한 시간
struct timespec st_mtim; /* Time of last modification */ // 마지막 수정 시간
struct timespec st_ctim; /* Time of last status change */ // 마지막 상태 변경 시간
#define st_atime st_atim.tv_sec /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};
○ 예제 (Qt 환경)
- 코드
// QT
#include <QDebug>
#include <QString>
// C++
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
struct stat fileStat;
const char* file = "/home/ubuntu/test.mp4";
if (stat(file, &fileStat) == 0)
{
qDebug() << QString("st_size : %1 byte").arg(fileStat.st_size);
struct tm* mtime = localtime(&fileStat.st_mtime);
qDebug() << QString("st_mtime : %1-%2-%3 %4:%5:%6")
.arg(mtime->tm_year + 1900)
.arg(mtime->tm_mon + 1)
.arg(mtime->tm_mday)
.arg(mtime->tm_hour)
.arg(mtime->tm_min)
.arg(mtime->tm_sec);
}
- 실행 결과
14:46:40: Debugging starts
"st_size : 14037264 byte"
"st_mtime : 2016-10-13 12:7:16"
- 터미널에서 실제 test.mp4 파일의 정보
ubuntu@ubuntu-VirtualBox:~$ stat test.mp4
File: test.mp4
Size: 14037264 Blocks: 27424 IO Block: 4096 regular file
Device: 805h/2053d Inode: 3936144 Links: 1
Access: (0666/-rw-rw-rw-) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-05-15 14:46:55.335863274 +0900
Modify: 2016-10-13 12:07:16.000000000 +0900
Change: 2021-05-15 14:41:57.686069600 +0900
Birth: -
반응형
'프로그래밍 > 기타' 카테고리의 다른 글
[Qt] QMessageBox로 알림, 아이콘, 선택 메시지 박스 띄우는 방법 (0) | 2021.05.15 |
---|---|
[Linux, C++] 파일 존재, 읽기, 쓰기, 실행 권한 여부 확인하는 방법 (access) (0) | 2021.05.15 |
[Linux, Qt] QProcess로 쉘 명령어, 프로그램 시작하는 방법 (0) | 2021.05.14 |
[Linux, Ubuntu] SCP를 이용하여 원격지로 네트워크로 파일 전송, 다운로드 하기 (0) | 2021.05.10 |
[Linux, Ubuntu] 디스크의 정보 보는 방법 (fdisk, 용량, 타입) (0) | 2021.05.09 |