GNU/Linux >> Tutoriels Linux >  >> Linux

Le moyen le plus sûr de forcer la fermeture d'un descripteur de fichier

ouvrez /dev/null avec O_WRONLY, puis dup2 pour fermer le descripteur de fichier incriminé et réutilisez son descripteur pour /dev/null. De cette façon, toute lecture ou écriture dans le descripteur de fichier échouera.

Si vous dupliquez un descripteur vers /dev/null , toute écriture n'échouera pas , mais réussit , et les lectures réussiront et retourne 0 (eof).

Cela peut ou non être ce que vous voulez.

Sous Linux, vous pouvez également ouvrir un fichier avec des drapeaux =3 (O_WRONLY|O_RDWR alias O_NOACCESS ) qui entraînera l'échec de toute lecture ou écriture avec EBADF .

Le fichier ne sera disponible que pour les ioctls - ce qui soulève un danger dont il n'est pas question dans les autres réponses et commentaires :les lectures et les écritures ne sont pas les seules opérations effectuées sur les descripteurs de fichiers. (qu'en est-il de lseek ou ftruncate ?).

Mise à jour :

J'ai trouvé quelque chose de mieux que le O_WRONLY|O_RDWR non documenté :O_PATH = 010000000 / 0x200000 . Selon la page de manuel open(2) :

O_PATH (since Linux 2.6.39)
     Obtain a file descriptor that can be used for two  purposes:  to
     indicate a location in the filesystem tree and to perform opera-
     tions that act purely at the file descriptor  level.   The  file
     itself  is not opened, and other file operations (e.g., read(2),
     write(2), fchmod(2), fchown(2), fgetxattr(2), mmap(2)) fail with
     the error EBADF.

    The  following operations can be performed on the resulting file
     descriptor:

    *  close(2); fchdir(2) (since Linux 3.5); fstat(2) (since  Linux
        3.6).

    *  Duplicating  the  file  descriptor (dup(2), fcntl(2) F_DUPFD,
        etc.).

Linux
  1. Un moyen facile de masquer des fichiers et des répertoires sous Linux

  2. Manière de modifier un fichier sur place ?

  3. Portabilité des liens de descripteur de fichier ?

  4. Une façon astucieuse de défragmenter un gros système de fichiers ?

  5. Sauvegarde cloud vs sauvegarde locale :le moyen le plus sûr de stocker des données

Installer Kali Linux sur VirtualBox :le moyen le plus rapide et le plus sûr

Comment forcer la suppression d'un fichier ?

Quelle est la bonne façon d'utiliser inotify ?

Existe-t-il un moyen de recadrer un fichier NETCDF ?

Existe-t-il un moyen de reprendre un scp interrompu d'un fichier?

Comment forcer le redémarrage de firefox proprement ?