GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál sería el equivalente de Win32 API en Linux?

Necesita entender qué son las llamadas al sistema. En Linux, son la API de usuario más baja posible (en contraste, la API de Win32 probablemente mezcla llamadas al sistema reales del kernel con algunas funciones de bibliotecas. libc también hace tal mezcla en Linux). fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) son llamadas al sistema importantes (pero hay alrededor de 300 de ellas, consulte syscalls(2) para obtener una lista, que depende de su kernel de Linux preciso).

No espere que todas las funciones de Windows estén disponibles en Linux (y viceversa).

Ni siquiera pienses en tal equivalente.

Obtenga una mentalidad diferente en Linux.

(En particular, los procesos son muy diferentes en Linux y en Windows).

No olvides que Linux es software libre , y puede sumergirse en el código fuente de cada función que está utilizando en Linux. Léalo, búsquelo, mejórelo...

Primero lea la página del manual intro(2) y varias otras páginas del manual (en particular, syscalls(2), intro(3), etc.). Lea también, p. Programación Linux Avanzada y Programación Unix Avanzada.

Algunas bibliotecas intentan factorizar y proporcionar una abstracción común tanto para Posix (por ejemplo, Linux) como para Windows. En particular Qt (y también Gtk o FLTK o POCO, y Wt para aplicaciones web y sqlite para bases de datos).

Algunos software de servidor de código abierto (por ejemplo, lighttpd, exim, postgresql, etc...) pueden ejecutarse tanto en Linux como en Windows (por supuesto, después de la recompilación)

Si está interesado en la interfaz gráfica, comprenda la importante función de X11 (observe que el servidor X11 está más cerca de la pantalla y el teclado; la mayoría de las aplicaciones gráficas son clientes X11). En 2016 o 2020, X11 tiende a ser reemplazado por Wayland (pero no notará ese "detalle" de implementación, uno realmente importante, si codifica contra Qt o GTK)

Si escribe una aplicación usando solo llamadas Qt y/o POCO (aquellas que no están documentadas como específicas de Linux o Windows) además de las funciones estándar de C++, debe ser portátil desde Linux a Windows y viceversa.


Si desea portar una aplicación que usa llamadas Win32, su mejor opción podría ser usar WineLib. Esto usa las bibliotecas que sustentan a Wine, pero no es lo mismo que simplemente ejecutar una aplicación usando Wine:vuelve a compilar su aplicación como una aplicación de Linux, solo usando las bibliotecas compartidas de WineLib. Sin embargo, seguirá pareciendo una aplicación de Windows, a menos que luego modifique la capa de la interfaz de usuario.

Como se ha dicho en otras partes de las respuestas, no hay un equivalente directo real de Win32 en Linux:diferentes componentes proporcionan diferentes bits de Win32 y, a veces, tiene una opción de componentes. Esto es posible porque algunos equivalentes de partes de Win32 se implementan de forma nativa en un nivel inferior; por ejemplo, Win32 proporciona componentes de interfaz de usuario, cuyos equivalentes están disponibles en GTK, Qt o cualquier otro conjunto de herramientas (como WineLib), que a su vez interactúe con X. Así como normalmente usaría componentes de Win32 en lugar de dibujar los suyos propios usando llamadas API de nivel inferior, normalmente usaría componentes de su conjunto de herramientas de interfaz de usuario de alto nivel en lugar de usar X directamente.


Linux
  1. ¿Cuál es el equivalente de Linux a la pausa de DOS?

  2. ¿Cuál es el equivalente a Posix popen() en la API de Win32?

  3. ¿Cuál es el equivalente a getch() y getche() en Linux?

  4. ¿Cuál es el equivalente Unix/Linux de E/S registrada?

  5. ¿Cuál es el equivalente al comando de archivo de Linux para Windows?

¿Qué es el comando Watch de Linux + ejemplos?

¿Qué es el Shell en Linux?

¿Qué es el comando matar en Linux?

¿Cuál es el equivalente del comando de Linux sudo fdisk -l en MacOS?

¿Cuál es el equivalente Linux del inicio de Windows?

¿Cuál es el equivalente de FreeBSD de Linux update-rc.d?