Тема: TOCTOU
Показать сообщение отдельно
  #15  
Старый 05.06.2023, 07:22
Nil A
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

Nil A написал(а) к Alexey Khromov в Jun 23 03:55:56 по местному времени:

Нello, Alexey!

Sunday June 04 2023 23:44, from Alexey Khromov -> Nil A:

NA>> Для этого есть стандарты, и ещё эти комитеты, где чуваки
NA>> собираются побухать. Только FTSC комитет давно уже потерял
NA>> легитимность, тогда
AK> Но он все же есть, и стандарты есть. Хоть какие-то)

Я бы сказал, что он был, в прошедшем времени. Сегодня он не легитимен. Хотя, я в понятиях путаюсь, он выбрал легитимно, путём голосования большинства, просто у него кнопок и рычажгов никаких нет, чтобы хоть что-то сделать. Это сборище чуваков, которые обновляют своё имя в FTA-10003, на этом их активность и заканчивается, памятник чтоли.

AK> Был бы Оберон основной осью - писали б на паскале) Шутка. Но в
AK> Колибри, например, основной язык ассемблер, т.к. интерфейс системы
AK> на нем.

Если бы под Андроид и Айоэс писали бы как под ПалмОС, т.е. на C++, яб написал своего хотдога. Но Палм, и Псион, и даже до небес взлетевший Симбиан, все померли. Кстати, есть версия, где пальмос на линукс-кернеле живёт, но так ни одного устройства мы и не увидели.

А померли они все, потому что есть треугольник, почти что Бермудский, где все/всё пропадает. Треугольник - быстро, дёшево, хорошо. Ах нет, не этот. Ну короче, тот, чтобы и тайм-ту-маркет был примерно три-месяца, и чтобы девелоперов было много, за три копейки, и все потом взаимозамеляемые были. Ассемблер не выдержал сразу. Си/плюсы чуть попозже тоже не выдержали.

NA>> Тебе простой вопрос, как ты будешь старые флаг-файлы чистить? Ну
AK> У меня старые не остаются. Все обрабатываются.

Это называется happy path, но бывают в жизни огорчения, когда без хлеба ешь печения.

AK> При возможном сбое лишняя обработка не изменяет состояние системы,
AK> флаг обрабатывается. Перед обработкой флаг переименовывается, если в
AK> процессе обработки появился новый флаг - новый цикл обработки.
AK> Классический конечный автомат (ака finite state machine)

Обожди с FSM своим пока. Вот ты хочешь позвонить на линк / открыть базу / запустит тоссинг / .. Ты обнаруживаешь флаг, т.е. файл на файловой системе.
Ты утверждаешь, что ты переименовываешь файл (скорее всего, потому что слышал, что это атомарная операция для ОС), и дальше делешь sleep(N), и проверяешь, может там кто-то ещё создал файл флаг?

NA>> я к тому, что флаги, в качестве IPC - это тот ещё геморой.
AK> Любой IPC геморрой.

С появлением много-ядер, разруливанием потоков и процессов, стало уделом не только синьёров, но и от джунов уже требуется минимальное понимание. Короче, это уже решённая задача.

AK> Можно даже в нынешние споры по этому поводу у Торвальдса погрузится,
AK> он там семафоры переделал кажись, что они теперь всегда счетчиками
AK> являются.

Ещё один, жертва переводных книг. В su.c_cpp только что я спойлернул эту тему. Якобы, мьютексы - это англицизм, надо говорить семафоры. Но семафоры - это такая штука, со счётчиком увнутри, а мьютекс - он просто залочка.

AK> Флаги просто более-менее универсальны и меньше зависят от особенностей
AK> ОС.

Ну.. в юниксах я во флаг-файл положу pid процесса, ещё и атомарно переименую такой файл. А что в венде класть туда, я не знаю, надо вин32апи куприть.

AK>>> Где договорились?
NA>> Вот, какой-то JAM-001.TXT есть, ниразу ни FTSC, ну просто они не
NA>> можут А вот ещё, FSP-1037, про Squish, тоже не случился, по
NA>> известной причине
AK> Как видишь, это не "договорились", а рекомендация в описании формата и
AK> порядка работы с базой сообщений.

Это всега были и будут рекоммендации, и даже этот НTTP/2 сегодняшний. А вот когда начёшь личнные данные хранить, или номера кредиток, тогда будут уже требования регулятора.

AK> И навряд ли эта рекомендация учитывала все файловые системы и ОСи, на
AK> которых впоследствии работал этот формат.

Стандарт он такой, он должен очень обстрактно описать, чтобы, например C++ завёлся и на писюке, и на микроконтроллере, если он утверждает, что поддерживает стандарт.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием