Является ли операция перемещения в Unix атомарной?

Предположим, есть 2 процесса P1 и P2, и они получают доступ к общему файлу.Foo.txt

Предположим, что P2 читает изFoo.txt, Я нене хочу, чтобы P1 писалFoo.txt пока P2 читает это.

Так что я думал, что смогу сделать запись P1 вFoo.tmp и как последний шаг, переименуйтеFoo.tmp вFoo.txt, Мой язык программирования - Java

Итак, мой вопрос, будет ли это гарантировать, что P2 считывает правильные данные изFoo.txt? Будет ли выполнена операция переименования после завершения чтения файла P2?

РЕДАКТИРОВАТЬ

Я попытался воссоздать этот сценарий следующим образом:

Мой код P1 выглядит примерно так:

File tempFile = new File(path1);
File realFile = new File(path2);
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
for(int i=0;i

Ответы на вопрос(3)

Ваш ответ на вопрос