#include <sys/stat.h>
int stat(const char *restrict pathname, struct stat *restrict buf);
struct stat {
mode_t st_mode; /*file type & mode(permissions)*/
ino_t st_ino; /*i-node number(serial number)*/
dev_t st_dev; /*device number(file system)*/
dev_t st_rdev; /*device number for special files*/
nlink_t st_nlink; /*number of links*/
uid_t st_uid; /*user ID of owner*/
gid_t st_gid; /*group id of owner*/
off_t st_size; /*size in bytes, for regular files*/
struct timespec st_atime; /*time of last access*/
struct timespec st_mtime; /*time of last modification*/
struct timespec st_ctime; /*time of last file status chage*/
blksize_t st_blksize; /*best I/O block size*/
blkcnt_t st_blocks; /*number of disk blocks allocated*/
};
一旦给出pathname,stat函数将返回与此命名文件有关的信息结构,根据大小信息判断文件是否为空。
系统调用stat()无需对其所操作的文件本身拥有任何权限,但针对指定pathname的父目录要有执行(搜索)权限。
源代码如下:
#include <iostream> #include <sys/stat.h> bool file_is_empty(std::string &file_path) { struct stat buf; int val = stat(file_path.c_str(), &buf); if(val == -1) { std::cerr<<"stat error.\n"; } size_t size=buf.st_size; if(size == 0) return true; else return false; } int main() { std::string file_path="/root/vm.data"; if(file_is_empty(file_path)) std::cout<<file_path<<" is empty\n"; else std::cout<<file_path<<" is not empty\n"; return 0; }
原文链接: https://www.cnblogs.com/donggongdechen/p/9689545.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/281644
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!