• # Réponse (a vérifier)

    Posté par (site web personnel) . En réponse au message Questions d'exam. Évalué à 1.

    Exercice 1
    Repondre par vrai ou faux:
    1/ un processus dont le propriétaire est 1000 à les droits de l'utilisateur 1000.
    Vrai

    2/Une ecriture sur un tube sans lecteurs en mode bloquant provoque l'envoi du signal SIGPIPE au processus ecrivain, même si celui-ci a la place d'ecrire dans le tube.
    Vrai (pas sur)

    3/ Un processus n'effectuant aucun appel systeme n'est pas interruptible par un signal, car les signaux ne sont délivrés que lors du passage en mode noyau.
    Faux (on peux toujours envoyer un kill -9)

    4/ La terminaison d'un processus provoque la terminaison de tous ses fils.
    Vrai (quoique vérifie dans quel cas il passe zombi et dans quel cas il quitte proprement)

    5/ En général, un shell interactif ignore ou install son propre traitant pour le signal SIGINT.
    Vrai

    6/ En terme d'espace disque, la création réussie d'un lien physique (par le shell: ln titi toto ou par l'appel link) est plus coûteuse que la création réussie d'un lien symbolique.
    Vrai (12 octet contre 14k pour le lien physique)

    Exercice 2
    Répondre briévement:
    1/Expliquer pourquoi il est en général préférable d'utiliser les fonctions d'entrées-sorties de haut niveau plutot que celle de bas niveau?
    Meilleur perf, meilleures possibilité donnée au compilo pour optimiser le tout.

    2/ Qu'est-ce qu'une fonction réentrante? Illustrer sur un exemple le type de problème que peut poser l'utilisation de fonctions non réentrantes.
    Si mes souvenirs sont bon, c'est une fonction qui repartira au même endroit si elle a été interrompue par un signal.

    3/ Quelle différence y'a-t-il entre attente active et attente passive? Donner un exemple de chacune des deux.
    Dans quel contexte ?
    sleep (attente passive)
    select(attente active)

    Exercice 3
    On suppose que rep est un répertoire appartenant à l'utilisateur qui lance les commandes suivantes:
    $ bin/ls rep
    titi toto
    $bin/ls -l rep
    ls: titi: permission denied
    ls: toto: permission denied
    On supose que les permissions n'ont pas changé entre les 2 commandes.
    1/ Quels appels systèmes ou bibliothèque pourrait-on utiliser pour ecrire un programme dont le lancement équivaut à ls rep? Quels sont les permissions nécessaire pour que cette commande réussise?
    getdents()

    2/ Même questions pour la commande ls -l rep
    getdents() + boucle + stats()

    3/ Que peut-on en déduire pour les permissions positionnées sur le répertoire rep?
    Je vois pas comment c'est possible.
    Parce que si il peux lister c'est qu'il a les droits x (traverser le répertoire) et r (lire la liste des fichiers)
    Et ls -l donnera la liste de ces mêmes fichiers avec un descriptif long.

    A part si on a joué avec chattr ou retiré des syscalls (genre retirer le droit stats sur les fichiers en question).