-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
通过C来操作日志文件,使用MMAP机制写入日志,会发现在日志文件存在大量的���������字符。 #9
Comments
补充下:运行demo也会出现这种情况 |
出现�这种字符是编码显示的问题,正常情况下都是空字符,mmap文件没有写到的地方都是显示这个空字符,是用来占位扩展文件大小作用的,在日志文件上传前可以先清除后面的空占位符 |
嗯嗯,我在Linux上通过more查看的确是看到很多空的占位符,我不理解为啥在源码里需要设置空的占位符,这点能通过源码修改解决吗?另外一点就是如果在服务器上通过shell删除空字符或是在android端操作都感觉不是很好,能否在MMAP回写数据到磁盘的地方进行修改呢?请给予指点。
} |
空字符占位,是为了mmap内存映射作用的,没法修改源码,倒是可以在关闭文件前去除这些占位符 |
空字符的问题是没法避免的,要么就手动清掉,因为 mmap 在申请的时候是一段一段的,每次申请一段内存映射 buffer,系统都会把这部分初始化为全零,然后写入的时候是从头开始填充 buffer,然鹅,在最后上报日志的时候,最后一次申请的 buffer 一定没用完,所以才有了一堆全零。。。。。。。我之前做 mmap 的时候也遇到了 |
通过C来操作日志文件,使用MMAP机制写入日志,会发现在日志文件存在大量的���������字符。
The text was updated successfully, but these errors were encountered: