GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was wäre das Äquivalent der Win32-API in Linux?

Sie müssen verstehen, was Syscalls sind. Unter Linux sind sie die niedrigstmögliche Benutzerland-API (im Gegensatz dazu mischt die Win32-API wahrscheinlich echte Kernel-Systemaufrufe mit einigen Bibliotheksfunktionen. libc macht solche Mischung auch unter Linux). fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) sind wichtige Syscalls (aber es gibt ungefähr 300 davon, siehe syscalls(2) für eine Liste, die von Ihrem genauen Linux-Kernel abhängt).

Erwarten Sie nicht, dass jede Windows-Funktionalität unter Linux verfügbar ist (und umgekehrt).

Denken Sie nicht einmal an ein solches Äquivalent.

Entwickle eine andere Einstellung zu Linux.

(Insbesondere die Prozesse unter Linux und Windows sind sehr unterschiedlich).

Vergessen Sie nicht, dass Linux freie Software ist , und Sie können in den Quellcode jeder Funktion eintauchen, die Sie unter Linux verwenden. Lies es, suche es, verbessere es.....

Lesen Sie zuerst die Manpage intro(2) und mehrere andere Manpages (insbesondere syscalls(2), intro(3) etc...). Lesen Sie auch z.B. Fortgeschrittene Linux-Programmierung und Fortgeschrittene Unix-Programmierung.

Einige Bibliotheken versuchen, eine gemeinsame Abstraktion für Posix (z. B. Linux) und Windows auszuklammern und bereitzustellen. Insbesondere Qt (und auch Gtk oder FLTK oder POCO und Wt für Webanwendungen und sqlite für Datenbanken).

Einige Open-Source-Serversoftware (z. B. lighttpd, exim, postgresql usw.) kann sowohl unter Linux als auch unter Windows ausgeführt werden (natürlich nach Neukompilierung)

Wenn Sie an der grafischen Benutzeroberfläche interessiert sind, verstehen Sie die wichtige Rolle von X11 (beachten Sie, dass der X11-Server dem Bildschirm und der Tastatur am nächsten ist; die meisten grafischen Anwendungen sind X11-Clients). 2016 oder 2020 wird X11 tendenziell von Wayland abgelöst (aber Sie werden dieses „Detail“ der Implementierung – ein wirklich wichtiges – nicht bemerken, wenn Sie gegen Qt oder GTK codieren)

Wenn Sie eine Anwendung schreiben, die nur Qt- und/oder POCO-Aufrufe (die nicht als Linux- oder Windows-spezifisch dokumentiert sind) zusätzlich zu Standard-C++-Funktionen verwendet, sollte die Quelle von Linux nach Windows und umgekehrt portierbar sein.


Wenn Sie eine Anwendung portieren möchten, die Win32-Aufrufe verwendet, verwenden Sie am besten WineLib. Dies verwendet die Bibliotheken, die Wine zugrunde liegen, aber es ist nicht dasselbe wie das Ausführen einer Anwendung mit Wine – Sie kompilieren Ihre Anwendung als Linux-Anwendung neu, indem Sie einfach die gemeinsam genutzten Bibliotheken von WineLib verwenden. Es sieht jedoch immer noch wie eine Windows-Anwendung aus, es sei denn, Sie ändern dann die UI-Schicht.

Wie an anderer Stelle in den Antworten gesagt wurde, gibt es kein wirkliches direktes Äquivalent zu Win32 in Linux - verschiedene Teile von Win32 werden von verschiedenen Komponenten bereitgestellt, und manchmal haben Sie eine Auswahl an Komponenten. Dies ist möglich, weil einige Äquivalente von Teilen von Win32 nativ auf einer niedrigeren Ebene implementiert sind – zum Beispiel stellt Win32 UI-Komponenten bereit, deren Äquivalente entweder in GTK, Qt oder einer beliebigen Anzahl anderer Toolkits (wie WineLib) verfügbar sind, die selbst mit X interagieren. So wie Sie normalerweise Komponenten von Win32 verwenden würden, anstatt Ihre eigenen mit API-Aufrufen auf niedrigerer Ebene zu zeichnen, würden Sie normalerweise Komponenten aus Ihrem High-Level-UI-Toolkit verwenden, anstatt X direkt zu verwenden.


Linux
  1. Was Linux zum nachhaltigen Betriebssystem macht

  2. Was macht die Linux-Community besonders?

  3. Linux vs. Unix:Was ist der Unterschied?

  4. Was ist das C++-Äquivalent für AutoResetEvent unter Linux?

  5. Was ist das Äquivalent von Linux's updatedb-Befehl für den Mac?

Was ist der Linux-Überwachungsbefehl + Beispiele

Was ist die Shell unter Linux?

Was ist der aktuelle Runlevel des Linux-Systems?

Was ist der Kill-Befehl in Linux?

Was entspricht dem Linux-Befehl sudo fdisk -l in MacOS?

Was ist das Äquivalent von Active Directory unter Linux