文件属性的结构体定义
针对文件的属性,svlib定义了一些结构体去对文件属性进行描述,如以下所示:
typedef struct packed {
bit r;//读
bit w;//写
bit x;//执行
} sys_fileRWX_s;//文件的读写执行属性
typedef struct packed {
bit setUID;//设置文件owner的uid
bit setGID;//设置文件owner的gid
bit sticky;//设置other的属性
sys_fileRWX_s owner;//文件所属者对文件的读写执行属性
sys_fileRWX_s group;//文件所属者所在组内其他成员对文件的读写执行属性
sys_fileRWX_s others;//组外其他成员对文件的读写执行属性
} sys_filePermissions_s;//文件所属的成员允许读写执行属性
typedef enum bit [3:0] {
fTypeFifo = 4'h1,//fifo设备
fTypeCharDev = 4'h2,//一次性读取装置
fTypeDir = 4'h4,//目录
fTypeBlkDev = 4'h6,//可随机存取装置
fTypeFile = 4'h8,//文件
fTypeSymLink = 4'hA,//软连接,不是硬连接,对软硬链接不了解的可以看以下链接,https://blog.csdn.net/qq_22310551/article/details/129267947
fTypeSocket = 4'hC//socket文件,与通信相关,感兴趣的可以看以下链接,https://blog.csdn.net/m0_38033199/article/details/127916745
} sys_fileType_enum;//文件类型
typedef struct packed {
sys_fileType_enum fType;
sys_filePermissions_s fPermissions;
} sys_fileMode_s;
typedef struct {
longint mtime;//文件的内容上一次被修改的时间
longint atime;//文件上一次被访问的时间
longint ctime;//文件的权限,owner,group或者内容上一次被修改的时间
longint size;//文件的size,byte
int unsigned uid;//user id of file owner
int unsigned gid;//group id of file's group
sys_fileMode_s mode;
} sys_fileStat_s
属性查询函数
在svlib中存在一些package中的函数(不必通过类的实例化去调用,可直接通过函数名调用)去用于查询文件的一些属性。
function automatic longint file_mTime(string path, bit asLink=0);//返回file_mtime
function automatic longint file_aTime(string path, bit asLink=0);//返回file_atime
function automatic longint file_cTime(string path, bit asLink=0);//返回file_ctime
function automatic longint file_size(string path, bit asLink=0);//返回file_size,以byte为单位
function automatic sys_fileMode_s file_mode(string path, bit asLink=0);//返回文件类型以及权限
function automatic bit file_accessible(string path, sys_fileRWX_s mode = 0);//文件是否可以以指定的形式访问
如果path指定的路径不存在,则函数返回0,且会抛出错误。