170 похожих чатов

Здравствуйте. Подскажите прототип действий, когда нужно писать обычный лог в

файл txt. Пишут его процессы разных пользователей. Что я не очень понимаю: например, пишет первый exe в этот txt, и еще не дописал, а в этот момент второй exe начинает писать, натыкается на то, что файл занят первым exe. То есть как принято решать тривиальную задачу записи лога множеством процессов? Или использовать winapi lockfile?

10 ответов

25 просмотров

Ну просто так без лока файла на запись действительно не выйдет, поэтому часто экзешники либо в разные файлы пишут либо в раме собирают записи и потом их кучкой пишут в файл

LONG- Автор вопроса
Liza 丽莎
Ну просто так без лока файла на запись действитель...

Да, наверное, lockfile буду использовать. Есть же старая 1С 77, и она корректно пишет когда запущено много её экземпляров различными пользовптелями. Не знаю как она это делает, но подозреваю что блочет буфер, на размер записываемых каждым пользователем данных лога.

LONG
Да, наверное, lockfile буду использовать. Есть же ...

Ну вообще лочить файл частично можно но я напрямую с этим не встречаласб

Можно использовать мютекс

LONG- Автор вопроса
Олег
Можно использовать мютекс

Да, спасибо, уже тоже наткнулся на это решение. Завтра попробую.

LONG
Да, спасибо, уже тоже наткнулся на это решение. За...

Мютекст поможет, если написанные тобою программы пишут в файл

Вообще для корректной запили логов нескольких приложений используют лог-процессоры, вроде Fluent Bit и т.д. или системный журнал. А если это обычное пользовательское приложение используют отдельные лог файлы на каждое приложение. Но вообще 1. Для одновременной работы с файлом на чтение и запись есть примитивы синхронизации вроде FileStream.Lock для блокировок сегментов файла или выставление блокировок на чтение и запись файла. 2. В случае многопроцесной записи все зависит от стандартов - на уровне стандарта POSIX гарантируется, что в случае, когда запись выполняется единственным системным вызовом write, а файл был открыт в режиме "для добавления", то запись должна выглядеть атомарно. То есть в случае записи логов в один файл - каждый запишет свои данные и содержимое файла останется консистентным.

Ярослав
Вообще для корректной запили логов нескольких прил...

Т.е. в случае единичного обращения к файлу на запись ситуации «еще не дописал» не должно возникнуть.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта