Trasladar de UNIX a Win32
Existen varias opciones de migración de aplicaciones de UNIX a Windows:
Utilizar bibliotecas UNIX para trasladar aplicaciones desde UNIX a Win32
Trasladar aplicaciones de UNIX a Win32 de forma nativa
Ejecutar las aplicaciones UNIX en Windows utilizando el subsistema POSIX
Bibliotecas UNIX
Una opción que suelen tener en cuenta los programadores de UNIX es el uso de bibliotecas de otros fabricantes similares a UNIX, para permitir que se compile su código UNIX como archivo ejecutable de Win32.Algunas bibliotecas comerciales (y por lo menos una de dominio público) pueden conseguir esto.Esta opción es idónea para algunas aplicaciones.La ventaja de estas bibliotecas de traslado es que reducen al mínimo el trabajo inicial del traslado.Su principal inconveniente, para un producto de software competitivo, es que el traslado nativo a Win32 de una aplicación generalmente es más rápido e, inevitablemente, aporta más funcionalidad.No sería práctico que la aplicación tuviera que salir de su shell UNIX para efectuar llamadas de Win32 a fin de conseguir mejor funcionalidad desde Windows.
La lista siguiente proporciona los recursos de Microsoft y de otros fabricantes para la adaptación y compatibilidad de la migración de UNIX a Visual C++:
Guías de migración de UNIX
La Guía de migración de aplicaciones personalizadas de UNIX (UNIX Custom Application Migration Guide) proporciona ayuda técnica para la migración de código de UNIX al entorno Win32.
https://go.microsoft.com/fwlink/?LinkId=95428
La Guía de migración de proyectos de Unix (Unix Migration Project Guide) es el complemento de la Guía de migración de aplicaciones personalizadas de UNIX, ya que proporciona una ayuda muy completa para la migración de proyectos importantes de UNIX a Win32.Esta guía proporciona consejos sobre temas que se deben considerar en cada fase de migración de un proyecto.La guía puede descargarse desde:
https://go.microsoft.com/fwlink/?linkid=20012
Servicios de Microsoft Windows para UNIX (SFU)
Servicios de Microsoft Windows para UNIX (SFU) proporciona una gama completa de servicios multiplataforma para integrar Windows en entornos existentes basados en UNIX.Estos servicios para UNIX incluyen: uso compartido de archivos, acceso remoto y administración, sincronización de contraseñas, administración común de directorios, un conjunto común de herramientas y un shell.
InteropSystems.com
http://www.interopsystems.com/
El sitio de otro fabricante que proporciona software compatible con la adaptación de UNIX a Win32.
Sitio Web Boost de C++
http://boost.sourceforge.net/regression-logs/
http://boost.sourceforge.net/boost-build2/
Adaptación de aplicaciones UNIX directamente a Win32
Otra opción es la adaptación de las aplicaciones UNIX directamente a Win32.El uso de bibliotecas ANSI C/C++, así como de bibliotecas comerciales de compilación de C, pone a disposición de las aplicaciones de Win32 las llamadas al sistema tradicionales que necesitan las aplicaciones UNIX.
No es necesario modificar el modelo de salida de las aplicaciones basadas en stdio, puesto que las API de consola de Win32 imitan el modelo stdio, y existen versiones de curses que utilizan estas API.Para obtener más información, vea SetConsoleCursorPosition.
Las aplicaciones de Berkeley basadas en sockets apenas necesitan modificaciones para su ejecución como aplicaciones Win32.La interfaz Windows Sockets fue diseñada con miras a su portabilidad con sockets BSD, con un mínimo de cambios, que se documentan en las secciones de introducción de la especificación WinSock.
Windows admite RPC conforme a DCE, por lo que las aplicaciones basadas en RPC son fácilmente utilizables.Vea Funciones RPC.
Una de las áreas con diferencias más importantes es el modelo de proceso.UNIX utiliza fork, pero Win32 no.Dependiendo del uso de fork y de la base del código, Win32 cuenta con dos API posibles: CreateProcess y CreateThread.Una aplicación UNIX que bifurque varias copias de sí misma puede modificarse en Win32 de forma que tenga varios procesos o un solo proceso con varios subprocesos.En el segundo caso, existen varios métodos de IPC que facilitan la comunicación entre los procesos (y, probablemente, la actualización del código y los datos del nuevo proceso de forma que se parezcan al primario, si se necesita la funcionalidad suministrada por ese fork).Para obtener más información sobre IPC, vea Comunicaciones entre procesos.
Los modelos gráficos de Windows y UNIX son muy distintos.UNIX utiliza la GUI del sistema X Window, mientras que Windows usa GDI.Aunque las API X y GDI son similares en concepto, no existe una asignación sencilla entre ellas.No obstante, OpenGL puede facilitar la migración de las aplicaciones UNIX basadas en OpenGL.Y existen clientes y servidores X para Windows.Vea Contextos de dispositivos para obtener información sobre GDI.
Las aplicaciones UNIX básicas, incluidas muchas aplicaciones CGI, deberían trasladarse con facilidad a Visual C++ ejecutado en Windows.Funciones como open, fopen, read, write y otras están disponibles en la biblioteca de tiempo de ejecución de Visual C++.Asimismo, existe una correlación de uno a uno entre las API de C UNIX y las API Win32: open con CreateFile, read con ReadFile, write con WriteFile, ioctl con DeviceIOControl, close con CloseFile, etc.
Subsistema POSIX de Windows
Otra opción que contemplan los programadores de UNIX es el subsistema POSIX de Windows.No obstante, éste sólo admite POSIX 1003.1, la única versión estandarizada de POSIX existente cuando se creó Windows NT.Desde entonces, la demanda de ampliación de este subsistema ha sido escasa, puesto que la mayoría de las aplicaciones se han convertido a Win32.El sistema 1003.1 tiene un interés reducido para las aplicaciones de versión completa, puesto que no incluye muchas prestaciones (por ejemplo, las de 1003.2, compatibilidad con redes, etc.).Las aplicaciones completas que se ejecutan bajo el subsistema POSIX de Windows no tienen acceso a las características de Windows disponibles para las aplicaciones Win32; por ejemplo, archivos asignados en memoria, funciones de red y gráficos.Aplicaciones como VI, LS y GREP son los objetivos principales del subsistema POSIX de Windows.