在VxWorks里如何查看文件的尺寸(size)呢? 在Shell下可以使用命令ll()
而在code中,可以通过文件系统的IO操作来获取文件的尺寸。毕竟文件也是一种IO嘛 常用的函数有lseek(),它的作用本是设置文件读写指针的位置,而它的返回值是从文件开始位置到当前位置的偏移。
参数whence取值有三: SEEK_SET (0) |- set to <offset> SEEK_CUR (1) |- set to current position plus <offset> SEEK_END (2) |- set to the size of the file plus <offset>
因此使用lseek(fd, 0, SEEK_END)就可以得到文件的尺寸了
不过POSIX规定了offset必须是int类型的。如果文件尺寸超过了32位数的范围,则可以使用IO系统的FIOFSTATGET操作
成员st_size的类型是long long,足够用了。
POSIX还定义了两个封装更好的函数fstat()和stat()
其实它俩内部就是调用的FIOFSTATGET操作
或者借用IO系统的 FIONREAD/FIONREAD64操作来查看一共还有多少字符可以读取,也可以得到文件尺寸
而要修改文件的尺寸,可以用FIOTRUNC/FIOTRUNC64
ioctl()支持参数还有很多,有兴趣的童鞋可以去了解一下
这正是:
|