GNU/Linux >> Tutoriels Linux >  >> Linux

Quel serait l'équivalent de l'API Win32 sous Linux ?

Vous devez comprendre ce que sont les appels système. Sous Linux, il s'agit de l'API utilisateur la plus basse possible (en revanche, l'API Win32 mélange probablement de vrais appels système du noyau avec certaines fonctions de bibliothèques. libc fait aussi un tel mix sous Linux). fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) sont appels système importants (mais il y en a environ 300, voir syscalls(2) pour une liste, qui dépend de votre noyau Linux précis).

Ne vous attendez pas à ce que chaque fonctionnalité Windows soit disponible sur Linux (et vice versa).

Ne pensez même pas à un tel équivalent.

Obtenez un état d'esprit différent sur Linux.

(En particulier, les processus sont très différents sous Linux et sous Windows).

N'oubliez pas que Linux est un logiciel libre , et vous pouvez vous plonger dans le code source de chaque fonction que vous utilisez sous Linux. Lisez-le, recherchez-le, améliorez-le.....

Lisez d'abord la page de manuel intro(2) et plusieurs autres pages de manuel (notamment syscalls(2), intro(3) etc...). Lire aussi par ex. Programmation Linux avancée et programmation Unix avancée.

Certaines bibliothèques essaient de factoriser et de fournir une abstraction commune pour Posix (par exemple Linux) et Windows. Notamment Qt (et aussi Gtk ou FLTK ou POCO, et Wt pour les applications web, et sqlite pour les bases de données).

Certains logiciels serveur open source (par exemple lighttpd, exim, postgresql, etc...) peuvent fonctionner à la fois sur Linux et Windows (bien sûr, après recompilation)

Si vous êtes intéressé par l'interface graphique, comprenez le rôle important de X11 (notez que le serveur X11 est le plus proche de l'écran et du clavier ; la plupart des applications graphiques sont des clients X11). En 2016 ou 2020, X11 a tendance à être remplacé par Wayland (mais vous ne remarquerez pas ce "détail" d'implémentation - vraiment majeur - si vous codez avec Qt ou GTK)

Si vous écrivez une application en utilisant uniquement des appels Qt et/ou POCO (ceux qui ne sont pas documentés comme étant spécifiques à Linux ou Windows) en plus des fonctions C++ standard, elle doit être source portable de Linux à Windows et vice versa.


Si vous souhaitez porter une application qui utilise des appels Win32, votre meilleur pari pourrait être d'utiliser WineLib. Cela utilise les bibliothèques qui sous-tendent Wine, mais ce n'est pas la même chose que d'exécuter simplement une application à l'aide de Wine - vous recompilez votre application en tant qu'application Linux, en utilisant simplement les bibliothèques partagées WineLib. Cependant, il ressemblera toujours à une application Windows, à moins que vous ne modifiiez ensuite la couche d'interface utilisateur.

Comme cela a été dit ailleurs dans les réponses, il n'y a pas de véritable équivalent direct à Win32 sous Linux - différents éléments de Win32 sont fournis par différents composants, et parfois vous avez le choix entre plusieurs composants. Cela est possible car certains équivalents de parties de Win32 sont implémentés nativement à un niveau inférieur - par exemple, Win32 fournit des composants d'interface utilisateur, dont les équivalents sont disponibles dans GTK, Qt ou un certain nombre d'autres kits d'outils (comme WineLib), qui eux-mêmes interagir avec X. Tout comme vous utiliseriez généralement des composants de Win32 plutôt que de dessiner les vôtres à l'aide d'appels d'API de niveau inférieur, vous utiliseriez normalement des composants de votre boîte à outils d'interface utilisateur de haut niveau plutôt que d'utiliser X directement.


Linux
  1. Quel est le niveau d'exécution actuel du système Linux ?

  2. Quel est l'équivalent de Posix popen() dans l'API Win32 ?

  3. Quel est l'équivalent de getch() &getche() sous Linux ?

  4. Quel est l'équivalent C++ d'AutoResetEvent sous Linux ?

  5. Quel est l'équivalent de la commande Linux File pour Windows ?

Linux vs Unix :Quelle est la différence ?

Qu'est-ce que la commande Linux Watch + Exemples

Qu'est-ce que le Shell sous Linux ?

Qu'est-ce que la commande kill sous Linux ?

Quel est l'équivalent de la commande updatedb de Linux pour Mac ?

Quel est l'équivalent de la commande Linux sudo fdisk -l sous MacOS ?