сейчас я планирую программировать маленький сервер на C / C ++. Назначением для этого программного обеспечения будет какой-то сервер Linux, поэтому я подумал, что programmin сервер на Linux будет лучшей идеей. Проблема в том, что у меня есть MacBook (Air) и я установил виртуальную машину Linux, но IDE (создатель Qt) выводит меня из себя, так что я подумал о разработке сервера в XCode, а затем, когда закончил его компиляцию в VM. Поэтому мне интересно, насколько высока степень переносимости, когда дело доходит до pthread и socket.h? Если бы они были переносимы до определенной степени, вы бы порекомендовали мне разрабатывать в Xcode? (Я знаком с Xcode, потому что клиентом сервера будет приложение для iOS. Извините за мой плохой английский (я из GER) и (возможно) спасибо за ваш комментарий 🙂
Вы можете использовать стороннюю библиотеку, такую как boost
что абстрагирует от платформы конкретные детали как библиотека потоков а также библиотека сокетов. Операционные системы Linux и Mac OS X поддерживаются в Boost.
Мой ответ c++
Я вижу, вы пометили вопрос c
также.
Хотя использование 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)