没有线程的比赛条件?

时间:2010-08-09 16:05:34

标签: c race-condition

假设我有: 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()方法中没有线程,因此不存在竞争条件。这是真的吗?

5 个答案:

答案 0 :(得分:8)

有一种竞争条件是用户可以在更改“新文件”的权限之前立即交换“新文件”。这是(是?)常用的安全漏洞。

我只是看到Neil Butterworth有一个相关的想法。

答案 1 :(得分:6)

有可能发生竞赛 - 两个用户可以同时运行您的程序。

答案 2 :(得分:1)

竞争条件的另一个来源是中断和信号。如果你没有使用,则不会出现竞争条件(有单个 racer

答案 3 :(得分:0)

任何时候进行系统调用都有可能出现竞争条件。这是因为内核链接了系统上的所有线程,并允许进程之间的控制交互。在这种情况下,系统上的另一个线程可以访问与您的应用程序相同的文件。

答案 4 :(得分:0)

boost::filesystem docs对文件系统竞争条件有很好的解释,这些条件一般适用于文件系统。