RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> 1. при exit() C-подсистема сама закроет все хендлы, связанные с FILE. > > 2. при выходе из проги (kill / exit() или abort()) нормальная ОС (в число коих входит OS/2) закроет все связанные с ней бесхозные хендлы. > > 3. 100 раз всё равно не хватит. (кажется, надо минимум штук 500). > > 4. ИМХО это не самых простой путь угробить систему, даже если exit() не делать. Гораздо легче и ненепряжнее это получается через пару суток неспешного запускания child-процессов, если у них не запрашивать код завершения и запускать без P_NOWAITO. Но это только пока не выполнишь exit(). > > 5. А вот другой вопрос - файлы, открытые родителем без явного указания NOINHERIT, передаются всем его потомкам. Поскольку те в свою очередь эти файлы не открывали, и не знают что это такое, то и наследование этих хендлов продолжается во всех поколениях. > > В итоге, когда запустится PMShell и иже с ним, и когда дело доходит до моей проги, могут быть использованы все хендлы из лимита 20 штук (реально оказывается использовано около половины). > В итоге: > (1) на каждый процесс в system space резервируется место под почти все файлы его родителей. Не удивлюсь, что по некоему handle моей проге доступен на "rb+" os2.ini. Кстати, там ни у кого инишники не кривились? > > (2) моя прога сама должна запрашивать DosSetMaxFH ровно в том объеме, сколько хендлов ей нужно самой. А её дети, значит, должны запрашивать ещё больше? > > Получется, что единственая верная стратегия - это при каждом DosOpen fail запрашивать ещё парочку хендлов, т.е. приходим к тому, с чего начали - тогда ничто не будет мешать программе съесть всё имеющееся "системное пространство". > > Примечание - FileCommander всё же как-то закрывает все левые родительские хендлы. В доках такой функции я не нашел. (Сишная closeall - не то). Делать же for (i=0;i<65536li++) close(i); мне как-то боязно. >
_, _, _, _, _ _, _,_
(_ | / \ |\ | / \ |_/
, ) | , \ / | \| \ / | \
~ ~~~ ~ ~ ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.