如果两个进程在没有锁的情况下访问同一个文件会发生什么?

时间:2013-03-13 10:28:06

标签: linux file

在linux中:如果两个进程在没有任何锁定的情况下访问同一个文件,会发生什么?考虑以下情况:

  1. 进程A正在读取文件,而进程B正在编写文件。
  2. 进程A和进程B都写入相同的文件。
  3. 进程A正在读取文件,进程B正在复制/移动另一个文件以替换原始文件
  4. 进程A正在读取文件,进程B正在删除文件
  5. 进程A正在写入文件,而进程B正在复制/移动另一个文件以替换原始文件
  6. 进程A正在写入文件,进程B正在删除文件

1 个答案:

答案 0 :(得分:5)

1,2。读取和写入请求基本上分解为较小的请求,并且这些请求不按特定顺序执行。结果是完全混乱。这有一些例外,例如附加到文件的几个进程。在这种情况下,每次写入都是原子的。

4,6。文件删除对已经打开的文件句柄没有影响。

3,5。与1,2或4,6相同,具体取决于它是复制还是移动(==删除目标并重命名源)。