是否可以写入 mmap'd 文件而不会收到总线错误
Is it possible to write to a mmap'd file without getting a bus error
我试图监视我创建的文件,当内容从0
更改为1
时。这段代码创建了文件并对其进行了映射,然后旋转,等待*map
的内容从'0'
变为'1'
。
然而,一旦我运行echo 1 > file.dat
,代码崩溃与Bus Error
。
我假设这是因为echo(或我尝试的任何其他方法)正在创建一个新文件,并且mmap不再指向相关的东西。有什么办法能解决这个问题吗?
int fd = open(filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600);
write(fd, "0", 1)
char* map = static_cast<char*>(mmap(0, 1, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0));
echo 1 > the_file
执行以下操作:
- 截断
the_file
为0字节 - 将
1
和n
添加到the_file
在步骤1和2之间,文件的长度为0。
(步骤1由shell执行,当它解释重定向>the_file
时。然后由echo
命令执行步骤2,因此两者之间可能会有很长的时间间隔。
如果您想覆盖文件的一个字符,您可以使用dd
:
echo 1 | dd of=the_file bs=1 count=1 conv=notrunc
相关文章:
- C++系统找不到指定的文件错误
- C++语法头文件错误
- C++生成文件错误"implicit entry/start for main executable"
- C++/生成文件错误:未定义对"main"的引用
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- C++程序不制作文件(错误)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- "what does ":*** [可执行文件] 错误 1 " mean ?"
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 在课堂上创建了一个朋友,给出"无输入文件"错误
- Qt .exe文件错误
- c++ 添加具有写入文件错误的文本变量
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 写入文本文件错误,QT
- C++写入文件错误
- Windows Subsystem for Linux (WSL) 下的间歇性随机"找不到文件"错误
- 犰狳读取MAT文件错误
- 无法求解FullPathForFilename:COCOS2DX中可能缺少文件错误
- C Wininet FTP列出了许多文件错误
- 生成文件错误 - 找不到文件 - *.cpp