分享

Utility之文件尺寸

 立志德美 2019-06-06

在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()支持参数还有很多,有兴趣的童鞋可以去了解一下

这正是:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多