当前位置: 首页 > 文档资料 > FreeBSD 开发手册 >

3.7 竞态条件

优质
小牛编辑
132浏览
2023-12-01

竞态条件是由和事件时间相关的意料之外的依赖所导致的反常行为。 换句话说,一个程序员不正确的假设一个特殊的事件总是在另一个事件之前发生。

一些通常的导致竞态条件的原因是信号,存取检查和打开文件操作。 由于信号生来就是异步事件所以在处理他们时要特别当心。存取检查中使 用access(2)然后使用open(2) 是很明显的非原子操作。用户可以在两次调用中移走文件。换言之,有特 权的程序应该使用seteuid()然后直接调用 open()。沿着同一思路,一个程序应该总是在 open()之前设置正确的掩码来排除不合逻辑的 chmod()调用。