Переносимость pthread и socket.h

сейчас я планирую программировать маленький сервер на C / C ++. Назначением для этого программного обеспечения будет какой-то сервер Linux, поэтому я подумал, что programmin сервер на Linux будет лучшей идеей. Проблема в том, что у меня есть MacBook (Air) и я установил виртуальную машину Linux, но IDE (создатель Qt) выводит меня из себя, так что я подумал о разработке сервера в XCode, а затем, когда закончил его компиляцию в VM. Поэтому мне интересно, насколько высока степень переносимости, когда дело доходит до pthread и socket.h? Если бы они были переносимы до определенной степени, вы бы порекомендовали мне разрабатывать в Xcode? (Я знаком с Xcode, потому что клиентом сервера будет приложение для iOS. Извините за мой плохой английский (я из GER) и (возможно) спасибо за ваш комментарий 🙂

1

Решение

Вы можете использовать стороннюю библиотеку, такую ​​как boost что абстрагирует от платформы конкретные детали как библиотека потоков а также библиотека сокетов. Операционные системы Linux и Mac OS X поддерживаются в Boost.

Мой ответ c++ Я вижу, вы пометили вопрос c также.

3

Другие решения

Хотя использование Boost может облегчить вашу жизнь, чтобы ответить на вопрос <pthread.h> а также <sys/socket.h> оба являются стандартными заголовками POSIX и переносимы между системами POSIX, такими как Mac OS X и GNU / Linux. В заголовках GNU могут быть вещи, которые являются нестандартными расширениями или частью более новой POSIX, поэтому не поддерживаются Mac OS X, но почти все в <pthread.h> а также <sys/socket.h> это доступно в Mac OS X, также доступно в GNU / Linux и работает так же. Чтобы быть уверенным, убедитесь, что вы используете только портативные функции POSIX, а не функции, специфичные для платформы, прочитав справочные страницы функций или проверив Одиночная спецификация UNIX онлайн (эта ссылка предназначена для более старой версии POSIX, которую поддерживает Mac OS X, GNU / Linux в основном соответствует последним POSIX 2008 спецификации).

Увидеть <sys/socket.h> а также <pthread.h>

Помните, что Mac OS X поддерживает базовую спецификацию POSIX, но не все дополнительные компоненты, например он не поддерживает опцию «Таймеры» в POSIX 2001 (которая является частью базовой спецификации, то есть не является обязательной в POSIX-2008)

0

По вопросам рекламы [email protected]