Estoy portando un programa de consola relativamente simple escrito para Unix a la plataforma Windows ( Visual C ++ 8.0 ). Todos los archivos fuente incluyen "unistd.h", que no existe. Al eliminarlo, recibo quejas sobre la falta de prototipos para 'srandom', 'random' y 'getopt'. Sé que puedo reemplazar las funciones aleatorias, y estoy bastante seguro de que puedo encontrar / piratear una implementación de getopt.
Pero estoy seguro de que otros se han encontrado con el mismo desafío. Mi pregunta es: ¿hay un puerto de "unistd.h" para Windows? Al menos uno que contenga esas funciones que tienen una implementación nativa de Windows: no necesito tuberías ni bifurcación.
EDITAR :
Sé que puedo crear mi propio "unistd.h" que contiene reemplazos para las cosas que necesito, especialmente en este caso, ya que es un conjunto limitado. Pero como parece un problema común, me preguntaba si alguien ya había hecho el trabajo para un subconjunto más grande de la funcionalidad.
Cambiar a un compilador o entorno diferente no es posible en el trabajo: estoy atascado con Visual Studio.
ssize_t
? ¿No se supone que es esosize_t
?ssize_t
debe serlong
(es decir, de 64 bits) en algunos sistemas.Intenta incluir el
io.h
archivo. Parece ser el equivalente de Visual Studio deunistd.h
.Espero que esto ayude.
fuente
#define
todo le gustaF_OK
, etc., pero tiene muchas cosas en comúnRecomendaría usar mingw / msys como entorno de desarrollo. Especialmente si está portando programas de consola simples. Msys implementa un shell similar a Unix en Windows, y mingw es un puerto de la colección de compiladores GNU (GCC) y otras herramientas de compilación GNU para la plataforma Windows. Es un proyecto de código abierto y muy adecuado para la tarea. Actualmente lo uso para crear programas de utilidad y aplicaciones de consola para Windows XP, y ciertamente tiene ese
unistd.h
encabezado que está buscando.El procedimiento de instalación puede ser un poco complicado, pero descubrí que el mejor lugar para comenzar es en MSYS .
fuente
Me topé con este hilo mientras intentaba encontrar una alternativa de Windows para
getpid()
(definido enunistd.h
). Resulta que eso incluyeprocess.h
el truco. Tal vez esto ayude a las personas que encuentren este hilo en el futuro.fuente
No, IIRC no hay getopt () en Windows.
Boost , sin embargo, tiene la biblioteca program_options ... que funciona bien. Al principio parecerá excesivo, pero no es terrible, especialmente teniendo en cuenta que puede manejar las opciones del programa de configuración en los archivos de configuración y las variables de entorno, además de las opciones de la línea de comandos.
fuente
MinGW 4.x tiene en unistd.h
\MinGW\include
,\MinGW\include\sys
y\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Aquí está el código para la versión MinGW, de Rob Savoye; modificado por Earnie Boyd, Danny Smith, Ramiro Polla, Gregory McGarry y Keith Marshall:
Este archivo requiere la inclusión de
_mingw.h
, que es el siguiente:El resto de las inclusiones deben ser estándar para su entorno.
fuente
Sí, hay: https://github.com/robinrowe/libunistd
Clone el repositorio y agregue
path\to\libunistd\unistd
a laINCLUDE
variable de entorno.fuente
El equivalente de
unistd.h
en Windows eswindows.h
fuente
Cree su propio encabezado unistd.h e incluya los encabezados necesarios para los prototipos de funciones.
fuente