Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-08-12

Легаси

Автор жжет. Напалмом

Я не сильно большой знаток *NIX систем и Linux, специализируюсь больше на разработке кросс-платформенных решений, а тут как раз представился удобный случай повнимательнее взглянуть на знаменитые сигналы UNIX. 
Изначально примитивный и очень простой механизм -- асинхронный вызов для аварийных ситуаций с передачей одного целого числа как кода аварии (см. signal() в сишной библиотеке) превратили в уродливое монстроподобное гавно, которое разве что за рисование окон не отвечает.
...
И конечно же, ваш ждет куча другого легаси гавна, вроде двух различных видов функций для обработки сигналов, или лежащего рядом указателя sa_restorer, который как бэ obsolete и не должен использоваться... Кста, если вы загляните в signal.h, то увидите там # ifdef __KERNEL__ и #else секцию, которая начинается словами /* Here we must cater to libcs that poke about in kernel headers. */. Очень мило!

Отдельный большой вопрос, почему при запросе асинхронной I/O операции я не могу конкретно указать callback, куда я желаю получить нотификацию, для меня остается загадкой. 

Кстати, другой хрестоматийный пример подобного "развития" API -- беркли сокеты, о которых я не могу говорить больше пяти секунд, не приходя в лютое бешенство от криворукости и скудоумия людей, их придумавших.

#5. Давайте о чем-то хорошем, а?...
Мне вот, к примеру, нравится, что при отсутствии обработчика завершения асинхронной I/O операции приложений падает. Я серьезно, без всякого сарказма. 


Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)