Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.HUSKY
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.HUSKY с датами от 16 Jul 13 10:00:06 до 04 May 24 09:45:34, всего сообщений: 5323
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 4579 из 5323 ========================================= RU.HUSKY =
От   : Alexey Vissarionov               2:5020/545         07 Nov 21 02:51:20
Кому : Nil A                                               07 Nov 21 02:51:20
Тема : src/pktwrite.c: openPktForAppending - race condition
FGHI : area://RU.HUSKY?msgid=2:5020/545+61871537
На   : area://RU.HUSKY?msgid=2:5015/46+6186b776
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Доброго времени суток, Nil!
06 Nov 2021 20:03:20, ты -> All:

NA> Race condition в функции openPktForAppending()
NA> if(fexist(fileName))
NA> {
NA>   if((pkt = fopen(fileName, "r+b")) == NULL)
NA> ...
NA> Правильнее всего сделать цикл, попытаться открыть с  O_CREATE|O_EXCL,
NA> если вернулся EEXIST, то открывать на чтение, если чтение вернуло
NA> ENOENT, значит надо снова пытвться O_CREATE|O_EXCL, любые другие
NA> ошибки походу - выход с ошибкой.
NA> Геморой в том, что похожие проверки нужно написать и не для POSIX
NA> систем, например, винды с её похожими API. К сожаление fopen() из
NA> libc такой гибкостью не обладает.

man fdopen

Если, конечно, он там действительно нужен.


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Лотерея (сущ.): форма налога на незнание теории вероятности
--- /bin/vi
* Origin: ::1 (2:5020/545)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.050345 секунды