Я портирую относительно простую консольную программу, написанную для Unix, на платформу Windows ( Visual C ++ 8.0 ). Все исходные файлы включают в себя "unistd.h", который не существует. Удаляя его, я получаю жалобы на отсутствие прототипов для 'srandom', 'random' и 'getopt'. Я знаю, что могу заменить случайные функции, и я почти уверен, что смогу найти / взломать реализацию getopt.
Но я уверен, что другие столкнулись с той же проблемой. У меня вопрос: есть ли порт "unistd.h" для Windows? По крайней мере, одна из них касается тех функций, которые имеют встроенную реализацию Windows - мне не нужны каналы или разветвление.
РЕДАКТИРОВАТЬ :
Я знаю, что могу создать свой собственный "unistd.h", который содержит замены для вещей, которые мне нужны, особенно в этом случае, поскольку это ограниченный набор. Но так как это кажется общей проблемой, мне было интересно, кто-то уже сделал работу для большего подмножества функциональности.
Переключение на другой компилятор или среду невозможно на работе - я застрял с Visual Studio.
ssize_t
? Разве это не должно бытьsize_t
?ssize_t
должен бытьlong
(то есть 64-битным) в некоторых системах.Попробуйте включить
io.h
файл. Кажется, это эквивалент Visual Studiounistd.h
.Надеюсь, это поможет.
источник
#define
все как иF_OK
т. Д., Но у него много общегоЯ бы порекомендовал использовать mingw / msys в качестве среды разработки. Особенно если вы портируете простые консольные программы. Msys реализует Unix-подобную оболочку в Windows, а mingw является портом коллекции компиляторов GNU (GCC) и других инструментов сборки GNU для платформы Windows. Это проект с открытым исходным кодом, который хорошо подходит для этой задачи. В настоящее время я использую его для создания служебных программ и консольных приложений для Windows XP, и он наверняка имеет тот
unistd.h
заголовок, который вы ищете.Процедура установки может быть немного сложнее, но я обнаружил, что лучше всего начать с MSYS .
источник
Я наткнулся на эту тему, пытаясь найти альтернативу Windows для
getpid()
(определено вunistd.h
). Оказывается, в том числеprocess.h
делает свое дело. Возможно, это поможет людям, которые найдут эту ветку в будущем.источник
Нет, IIRC нет getopt () на Windows.
Boost , однако, имеет библиотеку program_options ... которая работает нормально. Поначалу это может показаться излишним, но это не страшно, особенно если учесть, что он может обрабатывать настройку параметров программы в файлах конфигурации и переменных среды в дополнение к параметрам командной строки.
источник
MinGW 4.x имеет unistd.h
\MinGW\include
,\MinGW\include\sys
и\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Вот код для версии MinGW Роба Савойя; модифицированные Эрни Бойдом, Дэнни Смитом, Рамиро Поллой, Грегори МакГарри и Китом Маршаллом:
Этот файл требует включения
_mingw.h
, которое выглядит следующим образом:Остальные элементы должны быть стандартными для вашей среды.
источник
Да, есть: https://github.com/robinrowe/libunistd
Клонируйте репозиторий и добавьте
path\to\libunistd\unistd
вINCLUDE
переменную окружения.источник
Эквивалент в
unistd.h
Windowswindows.h
источник
Создайте свой собственный заголовок unistd.h и включите необходимые заголовки для прототипов функций.
источник