|
|
1
4
由于您使用
如果你摆脱了
根据Karoly对另一个答案的评论,还有一个比赛条件是O_TRUNC在公开赛中。如果第二个线程调用
编辑 要解决O_TRUNC问题,不能有多个进程使用O_TRUNC调用shm_open。但是,如果您刚刚摆脱了O_TRUNC,那么您就有了启动问题,即如果共享内存对象已经存在(来自程序的前一次运行),那么它可能不会处于可预测的状态。关于可能性是将func2的开头分开:
或者,您可以保留相同的代码(只需去掉O_TRUNC),并在fork之前添加一个cleanup:
在所有情况下,如果您同时运行程序的多个副本,您仍然会遇到问题。 |
|
|
2
2
一些想法。。。
映射共享(_S) 原因是您的内存访问陷入了页面错误,此时内核将填充文件描述符中的内容,然后让您在RAM中进行写入,然后在稍后的某个时间点内核将刷新回文件描述符。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 1 年前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 1 年前 |