我在 C++ 库中有一个文件,并且我有一个通过访问ped 内存mmap(2)
从该文件中读取的函数。mmap
我想优雅地处理其他人在我打开文件时截断文件的情况。
问题是当文件被截断时,对mmap
ed 内存的访问会增加。SIGBUS
我可以安装一个信号处理程序,但我想摆脱它的唯一方法是使用setjmp
/ longjmp
,这会破坏所有 C++ 的东西,比如异常和自动变量。
在那儿
- 在读取内存之前检测底层文件已被截断的(最好是便宜的)方法?
- 一种从不会破坏程序其余部分的信号处理程序中逃脱的 C++ 方法?
SIGBUS