= Сообщение: 2180 из 2735 =================================== RU.FTN.DEVELOP = От : Alexey Khromov 2:5030/723 05 Jun 23 07:12:32 Кому : Nil A 05 Jun 23 07:12:32 Тема : TOCTOU FGHI : area://RU.FTN.DEVELOP?msgid=2:5030/723+647d6638 На : area://RU.FTN.DEVELOP?msgid=2:5015/46+647d5374 = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Здраствуйте, Nil!
05 июн 23 03:55, Nil A -> Alexey Khromov:
NA> Это называется happy path, но бывают в жизни огорчения, когда без NA> хлеба ешь печения.
Согласен. Отладка по-сути идет до сих пор) Вот кусочек лога: ----- 04.06.2023 23:30:02 ----- FLAG_TOSS TOSS LINK . ----- 05.06.2023 00:06:02 ----- SEM_ECHO . ----- 05.06.2023 00:06:02 ----- FLAG_ECHO SCAN . ----- 05.06.2023 00:10:01 ----- FLAG_TOSS TOSS LINK FLAG_ECHO SCAN . ----- 05.06.2023 00:22:01 ----- FLAG_POLL POLL . ----- 05.06.2023 00:36:01 ----- FLAG_TOSS TOSS LINK . ----- 05.06.2023 00:56:01 ----- FLAG_TOSS TOSS LINK . ----- 05.06.2023 00:58:01 ----- FLAG_TOSS TOSS LINK . ----- 05.06.2023 02:12:01 -----
NA> Обожди с FSM своим пока. Вот ты хочешь позвонить на линк / открыть NA> базу / запустит тоссинг / .. Ты обнаруживаешь флаг, т.е. файл на NA> файловой системе. Ты утверждаешь, что ты переименовываешь файл (скорее NA> всего, потому что слышал, что это атомарная операция для ОС), и дальше NA> делешь sleep(N), и проверяешь, может там кто-то ещё создал файл флаг? Зачем же спать) Переименовал - обработал - удалил переименованное - проверил снова, что новых флагов нет (в процессе обработки могут возникнуть новые как в результате обработки, так и внешних событий). Точка ставится, когда в каталоге флагов самих флагов не осталось)
NA> понимание. Короче, это уже решённая задача. Для программиста возможно, если он хоть чуточку воспринимает систему всю, от возможных NMI до соседнего краша процесса и отсвопленных участков кучи.
NA> Ещё один, жертва переводных книг. В su.c_cpp только что я спойлернул Увы, до переводных книг не дошел. Просто пользуюсь Archlinux и смотрю за чейнджлогом. иногда. А su.c_cpp подпышусь )
NA> эту тему. Якобы, мьютексы - это англицизм, надо говорить семафоры. Но NA> семафоры - это такая штука, со счётчиком увнутри, а мьютекс - он NA> просто залочка. И товарищ Линус приравнял одно к другому. Точнее рекомендовал использовать семафоры с единицей, чтобы выкинуть лишнюю сущность.
AK>> Флаги просто более-менее универсальны и меньше зависят от AK>> особенностей ОС.
NA> Ну.. в юниксах я во флаг-файл положу pid процесса, ещё и атомарно NA> переименую такой файл. А что в венде класть туда, я не знаю, надо В никсах touch flag создает файл нулевой длины, чего вполне хватает как флага. pid в run-файлах нужен, чтобы кильнуть аккуратно то, что потребно без поиска по логам. СистемДы их сама для себя обычно и создает. В SystemV скриптами было тоже самое хорошим тоном. Upstart я пропустил мимо.
NA> вин32апи куприть. В виндах то же самое
NA> будут уже требования регулятора. 152й ФЗ уже в печенках, не напоминай)
NA> Стандарт он такой, он должен очень обстрактно описать, чтобы, например NA> C++ завёлся и на писюке, и на микроконтроллере, если он утверждает, NA> что поддерживает стандарт. К чему и велось. Стандарты они такие. В конкретной реализации можно подставить под некоторые особенности окружения проверки/костыли)
Alexey Khromov --- GoldED+/LNX 1.1.5-b20230304 * Origin: - Вы в опасности! Вы окружены роботами! - (2:5030/723)