假设我有: sample.c
int main (...) {
char str*;
get s through user input
test(str);
return 0;
}
void test (str) {
copy str to new file
change file permissions on new file
close file
}
由于我的main()方法中没有线程,因此不存在竞争条件。这是真的吗?
答案 0 :(得分:8)
有一种竞争条件是用户可以在更改“新文件”的权限之前立即交换“新文件”。这是(是?)常用的安全漏洞。
我只是看到Neil Butterworth有一个相关的想法。
答案 1 :(得分:6)
有可能发生竞赛 - 两个用户可以同时运行您的程序。
答案 2 :(得分:1)
竞争条件的另一个来源是中断和信号。如果你没有使用,则不会出现竞争条件(有单个 racer )
答案 3 :(得分:0)
任何时候进行系统调用都有可能出现竞争条件。这是因为内核链接了系统上的所有线程,并允许进程之间的控制交互。在这种情况下,系统上的另一个线程可以访问与您的应用程序相同的文件。
答案 4 :(得分:0)
boost::filesystem docs对文件系统竞争条件有很好的解释,这些条件一般适用于文件系统。