Re: NT POSIX Was: libpthreads,libmpeg3 -> windows

From
Igor Sysoev ()
To
Boris Rudakov ()
Date
2003-06-09T15:12:24Z
Area
CARBON.COPY
 * Forwarded from area 'RU.UNIX.PROG'
From: Igor Sysoev <is@rambler-co.ru>

Boris Rudakov <Boris.Rudakov@p4.f9.n5054.z2.fidonet.org> wrote:

> Хотя... В теории этого набора может хватить чтобы дописать остальное, только
> нахек ? У меня такое чувство что на NT POSIX подсистему все забили всерьез и
> давно всвязи с полной ненужностью.

Насколько я понимаю, POSIX в NT был нужен Майкрософту ровно для одной цели.
Для того, чтобы ОС можно было использовать в правительственных учреждениях
США, она должна проходить тесты POSIX.1. Это лакомый кусок рынка и MS не
мог его упустить, поэтому и сделал posix подсистему, которая эти тесты
успешно проходит.

> А зря. Была бы она "в соотвествии" - глядишь и этого уродца, цигвина, не
> появилось бы :(

Можно ли posix подсистему применять в реальной жизни - MS это не волновало.
Так же как и не волнует возможность безгеморройной сборки многоплатформенного
софта. У MS один интерес (и я его понимаю) - чтобы писали только под винды.

>  DS>> И fork() там *есть*.
>
> Действительно. Я этого не знал и был уверен что в НТе он в принципе невозможен.
> Впрочем, средствами Win32 его на самом деле реализовать нельзя в принципе, а
> вот Native API... Мнда, POSIX подсистема знает что-то очень интересное :):):)

Есть такая книжка - "Windows NT/2000 Native API Reference", там в частноти
описан ZwCreateProcess(), который умеет делать fork().

> Причем, приколись: форк есть, а pthreads нету !!! А вот их-то сделать поверх
> родных нитей - просто как два пальца обоссать !!!!!!! Блин, да я за день-два
> (наверное) смогу весь pthreads собрать поверх Win32 ! А знать бы Native API
> (который мелкософт, сволочи, никогда полностью не опубликуют и не опишут) может
> вообще бы "почтиюникс" получился бы... Забавно :)

pthreads - это POSIX.1c, про него US goverment ничего не говорило, поэтому
MS даже и не дёргался его делать.

> Кстати, еще одна вещь вспомнилась: в НТе в комплекте идет crtdll.dll, которая
> реализует весьма и весьма полный вариант CLib и вкупе с psxdll может дать
> вполне полноценную среду какогон'ть старенького юникса. Забавно, да ? Причем,
> из-за неисповедимости путей драного Мелкософта есть еще и msvcrt.dll, которая
> опять-таки эмулирует чать UNIX-API и CLib, частично пересекаясь, а частично
> перекрывая по возможностям crddll.dll.

Что-то я сомневаюсь. crtdll.dll - это dll подсистемы win32 и программа из
посиксной подсистемы с ней слинковаться не сможет.

> Эт' чего получается, эт' получается что аналогично тому, как некоторые здесь
> присутствующие пытаются портировать свой софт в НТю цигвином под вайном, я могу
> портировать свой софт под юниксы в родной для меня НТе в ее Позиксе ?!?!?!

Что-то я сильно сомневаюсь в успехе такого портирования.

> По-ходу открытым остается вопрос с select - его тут нет.

А его нету в POSIX.

> Есть вероятность что
> будет работать винсокетовский, бо сокеты - обычные файлы, но... Завтра узнаем
> :)

С какой dll ты намерен линковать это дело ?

> Касаемого НТевого кастрата имеет положительный ответ. Там обработка хардверных
> исключений должна работать совершенно полноценно, в точности как в Win32
> subsystem.
>
> А вот что насчет настоящих юниксов на i386 ?

Настоящие юниксы для этого используют SIGSEGV. И не только на i386.
Мне, правда, непонятно, зачем ловить такие вещи. То есть, я знаю область
такого применения, но она достаточна узка.


-- 
Игорь Сысоев
http://sysoev.ru
--- ifmail v.2.15dev5
 * Origin: Rambler Office news site (2:5020/400)