Что произойдет, если процесс завершится сбоем при сбросе сопоставленного файла?

Я использую boost::interprocess::managed_mapped_file для IPC под Linux. Короче говоря, один процесс может записывать объекты в файлы (метод construct) для чтения другим процессом (метод find). Однако что делать, если процесс падает во время записи? Будет ли Boost обрабатывать это автоматически, или мне придется добавить механизм для обнаружения таких сбоев?


person old_bear    schedule 30.12.2013    source источник
comment
Что делать, если ваш источник питания выходит из строя во время записи? Ни вы, ни boost не можете надежно обнаружить это со стороны автора.   -  person Frédéric Hamidi    schedule 30.12.2013
comment
Итак, мне нужно добавить что-то вроде контрольной суммы для проверки файла? Или использовать базу данных (файл журнала)?   -  person old_bear    schedule 30.12.2013
comment
Сторона читателя заметит, что что-то не так, потому что канал IPC неожиданно закроется. Существует много способов восстановления, в том числе удаление частичного объекта и ожидание восстановления и повторной отправки модуля записи.   -  person Frédéric Hamidi    schedule 30.12.2013
comment
Извините, еще вопрос в том, что в соответствии с мануалом boost метод записи автоматически блокируется. Так что же происходит с этим замком, если писатель обналичивает его? Не вызовет ли это взаимоблокировку на стороне считывателя? Кажется, нет ничего о сбое процесса на странице повышения   -  person old_bear    schedule 30.12.2013


Ответы (1)


Если результат сбоя процесса не определен - никто не может знать, сколько операций ввода-вывода он мог выполнить. Но я думаю, что ОС, вероятно, выполняет ввод-вывод в некоторых единицах, возможно, по крайней мере, в одном блоке (512 байт) или странице (4 КБ).

person mvp    schedule 30.12.2013