Страница 1 из 1

C++ оболочка над системными вызовами

Добавлено: 10 июл 2007, 00:32
shaleny
В книге Марка Рочкинда "Программирование для UNIX" вкратце описывается авторская оболочка над основными системными вызовами для языка С++. Естественно основная задача данной оболочки не предоставить возможность использования системных вызовов, которые и так без проблем в С++ можно использовать. Автор в основном лишь изменил методы обработки ошибок: с рассмотрения пары возвращаемое значение и errno на стандартные для C++ механизмы обработки исключений.
По этому поводу возник у меня интерес, существуют ли подобные библиотеки для всех системных вызовов. Поиск в Google ощутимых результатов не дал, поэтому могу предположить, что с большой вероятностью данная концепция не очень интересна разработчикам. Вот и интересно, почему так?
Если все же что-либо подобное существует, буду рад, если кто-либо приведет ссылки на таковые оболочки.

Добавлено: 10 июл 2007, 08:34
Foxx
не совсем понял о чем речь, посоветую взглянуть на такой фреймворк как blocxx, например (http://forge.novell.com/modules/xfmod/project/?blocxx)

Добавлено: 10 июл 2007, 09:52
shaleny
Ну да, это нечто похожее, но все-таки не совсем то, что имелось в виду. BlocXX, насколько я понял, является более широкой библиотекой, в которую добавлены функции, которые по мнению создателей будут полезны разработчикам, но при этом они не имеют своего прототипа среди стандартных функций *nix. Вот что пишет сам Рочкинд перед описанием своей оболочки, может это поможет прояснить ситуацию:
В этой книге я часто жаловался на то, что стандартный API UNIX страдает от несогласованности обработки ошибок, странного именования функций и избыточности. Как было сказано в разделе 1.4.3, гораздо лучше обрабатывать ошибки с использованием исключений С++. А если уж я собрался сделать то, что для этого нужно, я могу переименовать функции и организовать их в классы, руководствуясь категорими из приложения D.
Вот тут описаны цели, которые преследовал автор и средства, которыми он при этом пользовался. Там же есть class reference получившейся библиотеки.
Кстати Рочкинд пишет, что он полностью сохраняет семантику стандартных функций, чего про BlocXX, на мой взгляд, не скажешь.

И все же, мне было больше интересно даже не найти соответствующий wrapper, а узнать, почему такие wrapper'ы непопулярны (исходя из результатов поиска в Google, правда нужно сделать скидку на то, что возможно я просто искать не умею).

Добавлено: 10 июл 2007, 11:41
michael
shaleny писал(а): И все же, мне было больше интересно даже не найти соответствующий wrapper, а узнать, почему такие wrapper'ы непопулярны (исходя из результатов поиска в Google, правда нужно сделать скидку на то, что возможно я просто искать не умею).
Скорее всего, это никому особенно не нужно - единый wrapper для всех системных вызовов. Все вызовы всё равно никто не использует, а для используемых wrapper нетрудно и самому написать. Кроме того, на c++ есть куча разных отдельных библиотек для работы с файлами, сокетами и т. д. Там, обычно, и есть требуемая обработка ошибок.