Cimetière d'exercices de laboratoires

Page content

Chronomètre

  • Développer un programme chrono qui permet d’obtenir le temps réel d’exécution d’une commande passé en argument (similaire à time). Pour ce faire, utiliser la fonction gettimeofday.

  • Reprendre le programme chrono, et rajouter les informations sur le temps passé en mode utilisateur et noyau de la commande passé en argument. Pour ce faire, utiliser la commande wait3.

Note: Pour vérifier les temps d’exécution obtenue à l’aide de votre programme, vour pouvez utiliser la commande time chrono [la commande à exécuter]. Les temps fournis par le programme chrono ne devraient pas être supérieur aux temps fournis par la commande time.

Descripteur de fichier

  • Quelle sera la valeur du fichier resultat après l’exécution du programme suivant, détaillez votre réponse. Vérifiez votre réponse en l’exécutant.
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv) {
  char message[] ="Programme mystére\n";

  int fdout = creat("resultat", 0666);
  if (fdout == -1) {
    perror("creat");
    return 1;
  }

  ssize_t w = write(fdout, message, strlen(message));
  if (w == -1) {
    perror("write");
    return 1;
  }

  int newfdout = dup(fdout);

  off_t offset = lseek(newfdout, -9, SEEK_CUR);
  if (offset == -1) {
    perror("lseek");
    return 1;
  }

  w = write(fdout, message, strlen(message));
  if (w == -1) {
    perror("write");
    return 1;
  }

  close(fdout);
  return 0;
}

Minitail

  • Question optionnelle : Reprennez la question précédente, mais cette fois ci :
    • Capturez l’information de taille du fichier passé en argument,
    • Capturez la date de la dernière modification,
    • Effectuez une pause sleep,
    • Vérifiez la nouvelle taille du fichier, ainsi que la date de la dernière modification,
    • Réaffichez l’intégralité du fichier si on a au moins un des cas suivants:
      • La taille a diminué
      • La taille a augmenté et l’ancien contenu a été écrasé
      • La taille est la même et le contenu a été modifié
      • La taille et le contenu sont les mêmes mais la date de la dernière modification est modifiée
    • Sinon affichez les nouvelles modifications