3

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

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

1 回答 1

5

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

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

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

于 2013-03-13T11:00:53.677 回答