GNU/Linux >> Linux Esercitazione >  >> Linux

Quale sarebbe l'equivalente dell'API Win32 in Linux?

Devi capire cosa sono le chiamate di sistema. Su Linux, sono l'API terra utente più bassa possibile (al contrario, l'API Win32 probabilmente mescola chiamate di sistema del kernel reali con alcune funzioni di libreria. libc fa anche questo mix su Linux). fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) sono chiamate di sistema importanti (ma ce ne sono circa 300, vedi syscalls(2) per un elenco, che dipende dal tuo preciso kernel Linux).

Non aspettarti che ogni funzionalità di Windows sia disponibile su Linux (e viceversa).

Non pensare nemmeno a un simile equivalente.

Ottieni una mentalità diversa su Linux.

(In particolare, i processi sono molto diversi su Linux e su Windows).

Non dimenticare che Linux è software libero e puoi immergerti nel codice sorgente di ogni funzione che stai utilizzando su Linux. Leggilo, cercalo, miglioralo.....

Leggi prima la pagina man intro(2) e molte altre pagine man (in particolare syscalls(2), intro(3) ecc...). Leggi anche ad es. Programmazione Linux avanzata e Programmazione Unix avanzata.

Alcune librerie cercano di scomporre e fornire un'astrazione comune sia per Posix (ad esempio Linux) che per Windows. In particolare Qt (e anche Gtk o FLTK o POCO, e Wt per le applicazioni web, e sqlite per i database).

Alcuni software server open source (ad es. lighttpd, exim, postgresql, ecc...) possono essere eseguiti sia su Linux che su Windows (ovviamente, dopo la ricompilazione)

Se sei interessato all'interfaccia grafica, comprendi il ruolo importante di X11 (nota che il server X11 è il più vicino allo schermo e alla tastiera; la maggior parte delle applicazioni grafiche sono client X11). Nel 2016 o 2020, X11 tende a essere sostituito da Wayland (ma non noterai quel "dettaglio" di implementazione - davvero importante - se codifichi con Qt o GTK)

Se scrivi un'applicazione utilizzando solo chiamate Qt e/o POCO (quelle non documentate come specifiche per Linux o Windows) in aggiunta alle funzioni C++ standard, dovrebbe essere sorgente portabile da Linux a Windows e viceversa.


Se vuoi eseguire il porting di un'applicazione che utilizza le chiamate Win32, la soluzione migliore potrebbe essere quella di utilizzare WineLib. Questo utilizza le librerie alla base di Wine, ma non è la stessa cosa che eseguire semplicemente un'applicazione utilizzando Wine:si ricompila l'applicazione come un'applicazione Linux, utilizzando semplicemente le librerie condivise di WineLib. Sembrerà comunque un'applicazione Windows, a meno che non modifichi il livello dell'interfaccia utente.

Come è stato detto altrove nelle risposte, non esiste un vero equivalente diretto a Win32 in Linux:diversi bit di Win32 sono forniti da componenti diversi e talvolta hai una scelta di componenti. Ciò è possibile perché alcuni equivalenti di parti di Win32 sono implementati nativamente a un livello inferiore:ad esempio, Win32 fornisce componenti dell'interfaccia utente, i cui equivalenti sono disponibili in GTK, Qt o in qualsiasi numero di altri toolkit (come WineLib), che a loro volta interagire con X. Proprio come useresti normalmente i componenti di Win32 invece di disegnarne uno tuo utilizzando chiamate API di livello inferiore, così normalmente utilizzeresti i componenti del tuo toolkit UI di alto livello piuttosto che usare X direttamente.


Linux
  1. Cosa rende Linux il sistema operativo sostenibile

  2. Cosa rende speciale la comunità Linux?

  3. Qual è l'equivalente Linux della pausa DOS?

  4. Qual è l'equivalente di getch() e getche() in Linux?

  5. Qual è l'equivalente C++ per AutoResetEvent in Linux?

Cos'è il comando Linux Watch + Esempi

Che cos'è la shell in Linux?

Qual è il comando kill in Linux?

Qual è l'equivalente di Posix popen() nell'API Win32?

Qual è l'equivalente del comando updatedb di Linux per Mac?

Qual è l'equivalente di Active Directory su Linux