L'accronyme POSIX signifie « Portable Operating System Interface » et le X souligne l'héritage du système UNIX. Il s'agit d'une API de programmation système utilisée sur les systèmes Unix/Linux. Le standard POSIX a commencé à être défini à partir de 1988 et a été révisé à plusieurs reprises.
Voici quelques librairies constituant l'interface POSIX.
| Entête à inclure | Description |
|---|---|
| <unistd.h> | Entête principale donnant accès aux principales fonctions du noyau Unix/Linux. |
| <pthread.h> | Pour utiliser les threads POSIX. |
| <semaphore.h> | Pour utiliser les sémaphores POSIX (un mécanisme de synchronisation pour les accès concurrents). |
| <regex.h> | Pour utiliser les expressions régulières POSIX. Attention, ce n'est pas la même syntaxe que les expressions régulières Perl. |
SQLite : un moteur de base de données SQL embarqué, très pratique lorsque l'on souhaite stocker des données structurées sans déployer un serveur de bases de données séparé. Le projet est disponible à l'adresse suivante : https://www.sqlite.org/.
libcurl : une librairie de transfert de données par URL. Elle permet notamment de réaliser des requêtes HTTP/HTTPS, mais elle supporte aussi de nombreux autres protocoles. Le projet est disponible à l'adresse suivante : https://curl.se/libcurl/.
OpenSSL : une librairie très connue pour l'implémentation de TLS, la manipulation de certificats et les opérations cryptographiques. Son API est assez riche et demande de la rigueur. Le projet est disponible à l'adresse suivante : https://www.openssl.org/.
libuv : une librairie d'entrées / sorties asynchrones multi-plateformes. Elle fournit notamment une boucle d'événements, des timers, des sockets et des abstractions pour certains traitements système. Le projet est disponible à l'adresse suivante : https://libuv.org/.
zlib : une librairie de compression très classique autour de l'algorithme Deflate. Elle est utilisée par de nombreux formats et projets, notamment PNG et gzip. Le projet est disponible à l'adresse suivante : https://www.zlib.net/.
libarchive : une librairie de lecture et d'écriture d'archives. Elle permet de manipuler plusieurs formats classiques,
comme tar, cpio, zip ou certains formats compressés. Le projet est disponible à l'adresse suivante :
https://www.libarchive.org/.
PCRE2 : une librairie d'expressions régulières compatibles avec la syntaxe Perl. Elle est à considérer lorsque
<regex.h> est trop limité ou lorsque vous souhaitez retrouver les habitudes des expressions régulières modernes.
Le projet est disponible à l'adresse suivante :
https://www.pcre.org/.
expat : une librairie de « parsing » de fichiers XML. Elle est disponible à partir de l'adresse suivante : https://libexpat.github.io/.
libxml2 : une librairie de manipulation de documents XML, historiquement développée pour le projet GNOME, mais utilisable indépendamment. Elle propose un périmètre plus large qu'un simple parseur SAX. Le projet est disponible à l'adresse suivante : https://gitlab.gnome.org/GNOME/libxml2.
cJSON : une librairie de manipulation de fichiers JSON. Elle est disponible à partir de l'adresse suivante : https://github.com/DaveGamble/cJSON.
libxlsxwriter : une librairie permettant la manipulation de fichiers au format .xlsx. Elle est disponible à partir de l'adresse suivante :
https://libxlsxwriter.github.io/.
libpng : la librairie de référence pour lire et écrire des images PNG. Le projet est disponible à l'adresse suivante : https://www.libpng.org/pub/png/libpng.html.
libjpeg-turbo : une librairie de manipulation d'images JPEG, compatible avec l'API libjpeg, mais optimisée pour les performances. Le projet est disponible à l'adresse suivante : https://libjpeg-turbo.org/.
SDL (Simple DirectMedia Layer) : une librairie multi-plateformes pour accéder à l'audio, au clavier, à la souris, aux contrôleurs et aux API graphiques bas niveau. Elle est très utilisée pour les jeux, les émulateurs et certains outils multimédia. Le projet est disponible à l'adresse suivante : https://www.libsdl.org/.
Win32 : il s'agit de l'API de programmation du système Windows et permet notamment la réalisation d'interfaces graphiques. Pour de plus amples informations, consultez le site suivant : https://learn.microsoft.com/en-us/windows/win32/apiindex/windows-api-list .
GTK (The GIMP ToolKit) : initialement développée pour le projet GIMP, elle est aujourd'hui utilisée par de nombreux logiciels et GNOME notamment. GTK fonctionne sur système Unix/Linux, Mac et Win32. Le projet est disponible à l'adresse suivante : https://www.gtk.org/.
ncurses : une librairie classique pour construire des interfaces texte dans un terminal. Elle permet de gérer des fenêtres,
des menus, des couleurs et la saisie clavier sans se limiter à de simples appels à printf. Le projet est disponible à
l'adresse suivante : https://invisible-island.net/ncurses/.
GLib : une librairie utilitaire issue de l'écosystème GNOME. Elle propose notamment des types de données, des chaînes, des tables de hachage, de la journalisation, des abstractions système et une boucle principale. Le projet est disponible à l'adresse suivante : https://docs.gtk.org/glib/.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :