`
simohayha
  • 浏览: 1404087 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

ftruncate和msync

阅读更多

int ftruncate(int fd, off_t  length)
int msync(void *addr, size_t len, int flags)


首先,man手册里面ftruncate说是当length大于文件本身的大小的话,会扩大文件的话并补'\0'的,可是我在arm-linu-gcc 3.4下却不是。


还有就是msync的话起始地址(也就是addr)必须是页大小的倍数,这样的话我们每次都要这么做:

假设起始地址是mmap,页大小是pagesize,所需要同步的长度为length.这时我们需要同步的起始地址就是:

(mmap/pagesize) * pagesize.而长度我们也需要扩展,这时长度就是length  + mmap %pagesize.这时就可以正常同步了..
2
0
分享到:
评论

相关推荐

    基于c中使用ftruncate()前需要fflush(),使用后需要rewind()的深入探讨

    在C语言编程中,文件操作是至关重要的,而`ftruncate()`、`fflush()`和`rewind()`三个函数在文件处理中扮演着不同角色。本文将深入探讨在使用`ftruncate()`前为何需要调用`fflush()`,以及使用`ftruncate()`后为何...

    node.js中的fs.ftruncate方法使用说明

    上述源码中`util.isFunction`和`util.isUndefined`是Node.js核心util模块提供的工具函数,用来检查参数是否为特定类型。`binding.ftruncate`是内部使用的底层实现,`makeCallback`用于将一个可能的同步操作转换为...

    简要对比C语言中的truncate()函数与ftruncate()函数

    在C语言中,`truncate()` 和 `ftruncate()` 都是用来改变文件大小的函数,但它们之间存在一些关键的区别。了解这些差异对于正确地处理文件操作至关重要。 首先,`truncate()` 函数通过文件路径来操作文件。它的原型...

    yaffs2 文件系统

    Hartman开发,针对NAND闪存的特性进行了优化,以提高在这些设备上的数据存储效率和可靠性。在本文中,我们将深入探讨YAFFS2文件系统的结构、工作原理以及其在嵌入式系统中的应用。 YAFFS2文件系统的主要特点包括:...

    UNIX网络编程 卷2:进程间通信

     12.2 mmap、munmap和msync函数 247  12.3 在内存映射文件中给计数器持续加1 250  12.4 4.4BSD匿名内存映射 254  12.5 SVR4 /dev/zero内存映射 255  12.6 访问内存映射的对象 255  12.7 小结 259  习题 260 ...

    UNIX网络编程 卷2 进程间通信 带完整书签,完整目录

    12.2 mmap、munmap和msync函数 247 12.3 在内存映射文件中给计数器持续加1 250 12.4 4.4BSD匿名内存映射 254 12.5 SVR4/dev/zero内存映射 255 12.6 访问内存映射的对象 255 12.7 小结 259 习题 260 第13章 ...

    《UNIX网络编程 第2版. 第2卷, 进程间通信(中文版)》(W·Richard Stevens[美] 著)

    12.2 mmap、munmap和msync函数 247 12.3 在内存映射文件中给计数器持续加1 250 12.4 4.4BSD匿名内存映射 254 12.5 SVR4 /dev/zero内存映射 255 12.6 访问内存映射的对象 255 12.7 小结 259 习题 260 第13章 Posix...

    UNIX网络编程 第2卷 进程间通信

    12.2 mmap、munmap和msync函数 247 12.3 在内存映射文件中给计数器持续加1 250 12.4 4.4BSD匿名内存映射 254 12.5 SVR4 /dev/zero内存映射 255 12.6 访问内存映射的对象 255 12.7 小结 259 习题 260 第13章 Posix...

    PHP程序设计-3期(KC016) 3.3.3文件删除拓展知识.doc

    文件删除是其中的一个重要功能,但除了删除,我们还可以对文件执行其他操作,比如复制、重命名和截取。在本节我们将重点探讨文件截取的拓展知识。 `ftruncate()` 函数在PHP中用于截取文件,它的作用是将文件长度...

    unix环境高级编程--第章 文件和目录(下).doc

    此外,还可以使用`truncate`和`ftruncate`系统调用来实现文件截短。这两个函数接收文件路径或文件描述符以及新的长度作为参数,将指定文件的长度缩短至给定值。如果文件原先的长度大于新长度,超出部分的数据将不可...

    UNIX环境高级编程(第四章)

    文件长度可通过stat结构的st_size成员得知,文件可以被截短,例如通过ftruncate或truncate函数。文件系统结构包括文件系统类型、挂载点和文件系统大小,可以使用statfs或fstatfs函数获取这些信息。link和unlink函数...

    linux系统下多线程编程文档资料

    文档内容大致如下: 第一章 线程基础知识 2 一.什么是线程 2 二.线程的优点 2 三.线程的缺点 2 四....五....六....七.....一....四、ftruncate和fstat函数 62 五、共享内存区的写入和读出 64 六、程序例子 65

    Linux 改变文件大小的方法

    在Linux操作系统中,有时我们...正确理解和使用这个函数可以帮助我们更好地管理Linux系统中的文件资源。在实际应用中,确保理解其可能产生的副作用,如数据丢失,以及在多线程或多进程环境下的同步问题,是至关重要的。

    高级UNIX编程 pdf 电子书

    2.17 truncate和ftruncate系统调用 练习 第3章 高级文件I/O 3.1 概述 3.2 磁盘特殊文件和文件系统 3.3 硬链接和符号链接 3.4 路径名 3.5 访问和显示文件元数据 3.6 目录 3.7 改变信息节点 3.8 其他的文件处理调用 ...

    vc++文件系统大全

    `ftruncate()`函数可以用来截断文件到指定长度。 6. **文件的读取与保存**:VC++提供了多种文件读写模式,如文本模式和二进制模式。`fread()`和`fwrite()`用于读写二进制数据,`fgets()`和`fprintf()`用于处理文本...

    Linux_Programming_posix_ipc.ppt

    然后,使用`ftruncate`设置共享内存的大小,如`ftruncate(shm_fd, SHM_SIZE);`如果其他进程已设定大小,可以使用`fstat`获取。接着,通过`mmap`将共享内存映射到进程地址空间,例如`addr = mmap (0, SHM_SIZE, PROT_...

    Linux_线程定义

    4. ftruncate和fstat函数:用于调整和获取文件状态。 5. 共享内存区的写入和读出:描述如何在多个线程或进程间进行数据共享。 6. 程序例子:通过具体的编程例子来演示如何使用共享内存进行线程间的通信。 以上...

Global site tag (gtag.js) - Google Analytics