# Unistd.h

En informatique, unistd.h est un fichier d'en-tête pour les langages de programmation C et C++, il donne accès à l'API du système d'exploitation POSIX. Il est défini par la norme POSIX.1, la base de la Single Unix Specification (SUS), et il devrait donc être disponible dans tout système d'exploitation et compilateur compatible POSIX. Par exemple, cela inclut les systèmes d'exploitation Unix et similaires, tels que les variantes de GNU, les distributions de Linux et BSD, et macOS, et les compilateurs tels que GCC et LLVM.
Sur les systèmes de type Unix, l'interface définie par unistd.h est typiquement composée en grande partie de fonctions d'enveloppe d'appel système telles que fork, pipe et de primitives d'E/S (read, write, close, etc.).

## Aperçu des fonctions

| | Fonction | Description |
| | crypt | chiffre des mots de passe et des données |
| | encrypt | chiffre les messages 64 bits |
| | gethostid | obtenir l'identifiant unique de l'hôte actuel |
| | gethostname | obtenir le nom d'hôte |
| | getopt | analyser les options des lignes de commande |
| | swab | échanger des octets adjacents |
| | sysconf | obtenir la configuration au moment de l'exécution |
| Signaux | alarm | programmer un signal d'alarme |
| Signaux | pause | attendre le signal |
| Système fichiers | access faccessat faccessat2 | vérifier les permissions de l'utilisateur pour un fichier |
| Système fichiers | chdir fchdir | changer de répertoire de travail |
| Système fichiers | chown fchown lchown fchownat | changer le propriétaire et le groupe d'un fichier |
| Système fichiers | close | fermer un descripteur de fichier |
| Système fichiers | dup dup2 | dupliquer un descripteur de fichier |
| Système fichiers | fsync fdatasync | synchroniser l'état in-core d'un fichier avec le périphérique de stockage |
| Système fichiers | fpathconf pathconf | obtenir les valeurs de configuration des fichiers |
| Système fichiers | ftruncate truncate | tronquer un fichier à une longueur spécifiée |
| Système fichiers | getcwd getwd get_current_dir_name | récupérer le répertoire de travail actuel |
| Système fichiers | isatty | tester si un descripteur de fichier fait référence à un terminal |
| Système fichiers | link linkat | créer un nouveau nom pour un fichier |
| Système fichiers | lockf | appliquer, tester ou supprimer un verrou POSIX sur un fichier ouvert |
| Système fichiers | lseek | repositionnement lecture/écriture décalage du fichier |
| Système fichiers | pipe pipe2 | créer un tube |
| Système fichiers | pread pwrite | lire ou écrire dans un descripteur de fichier à un décalage donné |
| Système fichiers | read | lire à partir d'un descripteur de fichier |
| Système fichiers | readlink readlinkat | lire la valeur d'un lien symbolique |
| Système fichiers | rmdir | supprimer un répertoire |
| Système fichiers | symlink symlinkat | créer un nouveau nom pour un fichier |
| Système fichiers | sync syncfs | livrer les caches du système de fichiers sur le disque |
| Système fichiers | ttyname ttyname_r | nom de retour d'un terminal |
| Système fichiers | unlink unlinkat | supprimer un nom et éventuellement le fichier auquel il se réfère |
| Système fichiers | write | écrire sur un descripteur de fichier |
| Processus | _exit | mettre fin au processus d'appel |
| Processus | execl execlp execle execv execvp execvpe | exécuter un fichier |
| Processus | fexecve | exécute le programme spécifié par le descripteur de fichier |
| Processus | fork | créer un nouveau processus |
| Processus | setpgid getpgid setpgrp getpgrp | définir/obtenir le groupe de processus |
| Processus | getpid getppid | obtenir l'identification du processus |
| Processus | getsid | obtenir l'ID de la session |
| Processus | nice | priorité du processus de changement |
| Processus | setsid | crée une session et définit l'ID du groupe de processus |
| Processus | sleep | dormir pendant un nombre de secondes spécifié |
| Processus | tcgetpgrp tcsetpgrp | obtenir et définir le groupe de processus de premier plan du terminal |
| Utilisateur/Groupe | getgid getegid | obtenir l'identité du groupe |
| Utilisateur/Groupe | getuid geteuid | obtenir l'identité de l'utilisateur |
| Utilisateur/Groupe | getgroups | obtenir la liste des ID des groupes supplémentaires |
| Utilisateur/Groupe | getlogin getlogin_r | obtenir le nom d'utilisateur |
| Utilisateur/Groupe | seteuid setegid | définir l'ID de l'utilisateur ou du groupe effectif |
| Utilisateur/Groupe | setgid | définir l'identité du groupe |
| Utilisateur/Groupe | setreuid setregid | définir l'ID réel et/ou effectif de l'utilisateur ou du groupe |
| Utilisateur/Groupe | setuid | définir l'identité de l'utilisateur |

## Couche de compatibilité Windows

Certains logiciels comme Cygwin et MinGW fournissent leurs propres versions de unistd.h, pour faire une traduction des appels de fonction POSIX en appel de fonction Windows.

## Références externes

* unistd.h dans opengroup
* unistd.h dans Dave's C tutorial
* unistd.h dans man7