Précédent Index Suivant

7.6  Les entrées-sorties

  Structuration des fichiers Unix

  Disques

% df /usr
Filesystem   512-blocks        Used       Avail Capacity  Mounted on
/dev/rz3g        792124      664414       48496    93%    /usr
% ls -lid /usr
    2 drwxr-xr-x  21 root     system       512 Nov  8  1995 /usr/

  Les i-nodes

  Accès aux données

Numéros des blocs du contenu du fichier Privilégie les accès aux fichiers de petite taille Allocation des blocs d'un fichier sur un volume

  Structure d'un répertoire

Un répertoire

  Appels système et bibliothèque standard

Appels système La bibliothèque standard

  Les appels système

  Les descripteurs

  Création d'un fichier

int creat (char *nom, int mode) ;

  Ouverture d'un fichier

int open (char *path, int oflag, int mode) ;

  Fermeture d'un fichier

int close (int idfi) ;

  Contrôle des entrées-sorties

int fcntl (int idfi, int cmd, int arg) ;

  Lecture dans un fichier

int read (int idfi, char *buffer, unsigned nbytes) ;

Exemple : afficher le contenu d'un fichier
int fil ;            /* descripteur du fichier */
char buffer [513] ;  /* buffer de lecture */
int l ;             

main (int argc, char *argv[])
{  
  /* ouverture du fichier */
  if ((fil = open (argv [1], 0)) < 0) {
    perror ("open") ; exit (fil) ; 
  }
  
  /* lecture et affichage */
  for (;;) {
    if (! (l = read (fil, buffer, 512))) break ; 
    buffer[l] = NULL ; 
    printf ("%s", buffer) ; 
  }
  
  /* fermeture du fichier */
  if (close (fil) { 
    perror ("close") ; exit (2) : 
  }
  
  exit (0) ; 
}    

  Écriture dans un fichier

int write (int idfi, char *buffer, unsigned nbytes) ;

  Positionnement dans un fichier

int lseek (int idfi, long offset, int whence) ;

  Établissement d'un lien avec un fichier

int link (char *nom1, char *nom2) ;

  Destruction d'un lien ou d'un fichier

int unlink (char *nom) ;

  Droit d'accès pour les créations

int umask (int compmode) ;

  Changement des droits d'accès

int chmod (char *nom, int mode) ;

  Contrôle des droits d'accès

int access (char *nom, int mode) ;

  Changement de répertoire

int chdir (char *nomdir) ;

  Duplication d'un descripteur

int dup (int idfi) ;

  Structure d'un i-node

struct  stat {
  dev_t st_dev;        /* ID of device containing a directory*/
                       /*   entry for this file.  File serial*/
                       /*   no + device ID uniquely identify */
                       /*   the file within the system */
  ino_t st_ino;        /* File serial number */
  mode_t st_mode;      /* File mode */
  nlink_t st_nlink;    /* Number of links */
  uid_t st_uid;        /* User ID of the file's owner */
  gid_t st_gid;        /* Group ID of the file's group */
  off_t st_size;       /* File size in bytes */
  time_t st_atime;     /* Time of last access */
  time_t st_mtime;     /* Time of last data modification */
  time_t st_ctime;     /* Time of last file status change */
  uint_t st_blksize;   /* Size of block in file */
  int st_blocks;       /* blocks allocated for file */
};

  Information sur un fichier ouvert

int fstat (int idfi, struct stat *buffer) ;

  La bibliothèque


Précédent Index Suivant