Я был удивлен внезапно созданной жесткой связью между файлом конфигурации, которым я (как usr1) владею, и временным файлом, который я создаю в демоне ОС (каждые 5 минут), для копирования из исходного файла конфигурации.
После копирования обратно в исходный файл я использую rename(*file2, *file1); в C, который убивает любую трассировку к config.txt.tmp
Каталог принадлежит root на диске mnt /sram, и ни у кого нет root-доступа к встроенной машине. Носитель данных — флэш-память NAND SRAM на встроенном Linux 2.6.10.
ls -l
показывает
2 config.txt 699byte date_modify
2 config.txt.tmp 699byte date_modify
config.txt.tmp должен быть создан, скопирован из config.txt, отправить параметры конфигурации в config.txt, а затем удален атомарно в течение всего 5-7 строк C
Каталог принадлежит root, и нет возможности создавать жесткие ссылки.
У кого-нибудь есть объяснение создания «жесткой ссылки» в функциях низкого уровня? Могу ли я столкнуться с состоянием гонки? Или это может быть какой-то код ядра для хранения во флэш-памяти? Или ошибка в линуксе?
Мой код работал более 5 лет, 100 машин, и ТОЛЬКО 1 машина недавно столкнулась с этой проблемой.