Skip to content
Extraits de code Groupes Projets
Non vérifiée Valider 1a40ad68 rédigé par Olivier Bonaventure's avatar Olivier Bonaventure Validation de GitHub
Parcourir les fichiers

Merge pull request #147 from qdeconinck/qbf-s5

add qbf for fifth week
parents 48c108bb 67cbe87b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -119,3 +119,49 @@ Exercices ...@@ -119,3 +119,49 @@ Exercices
.. 17. `tee(1)`_ est un utilitaire qui permet de recopier son entrée standard vers un ou plusieurs fichiers et également vers sa sortie standard. Il peut être utile pour par exemple inspecter des données échangées entre deux processus à travers un :term:`pipe`. Quels sont les appels systèmes exécutés par `tee(1)`_ lors de l'exécution de la commande ``cat /tmp/t | tee /tmp/tee.out | grep "sinf1252" `` .. 17. `tee(1)`_ est un utilitaire qui permet de recopier son entrée standard vers un ou plusieurs fichiers et également vers sa sortie standard. Il peut être utile pour par exemple inspecter des données échangées entre deux processus à travers un :term:`pipe`. Quels sont les appels systèmes exécutés par `tee(1)`_ lors de l'exécution de la commande ``cat /tmp/t | tee /tmp/tee.out | grep "sinf1252" ``
Questions de bilan final
------------------------
Un système informatique est utilisé par 3 utilisateurs: ``quentin``, ``brigitte`` and ``françois``. Ils appartiennent à des groupes différents comme décrit ci-dessous.
.. code-block:: bash
$ groups quentin
quentin : quentin boys
$ groups brigitte
brigitte: brigitte girls sudo wheel
$ groups françois
françois: françois boys
#. ``quentin`` ouvre le fichier ``/shared_folder/petit_projet.c`` en utilisant les drapeaux ``O_CREAT | O_RDWR | O_TRUNC``, donne les permissions ``664``, l'associe au groupe ``boys`` et écrit le code de son projet dedans.
#. Quelles sont les permissions que doit avoir ``/shared_folder`` pour que ``françois`` et ``brigitte`` puissent accéder au fichier ``petit_projet.c``?
#. ``brigitte``, de son côté, lance ensuite les commandes suivantes.
.. code-block:: bash
$ sudo chown brigitte:girls /shared_folder/petit_projet.c
$ chmod 660 /shared_folder/petit_projet.c
``quentin`` veut maintenant sauvegarder son travail avec l'appel système ``write(2)`` sur le file descriptor obtenu avec le ``open(2)`` précédent, et puis le ferme avec ``close(2)``. Que se passe-t-il?
#. ``françois`` aimerait aussi rajouter son nom sur le projet et ouvre le fichier avec ``open(2)`` avec le drapeau ``O_WRONLY`` pour ensuite utiliser ``write(2)``. Que se passe-t-il?
#. Finalement, ``quentin`` souhaite relire son code et fait appel à ``open(2)`` avec le drapeau ``O_RDONLY``, pour ensuite utiliser ``read(2)``. Que se passe-t-il?
#. Considérons le fichier ``/shared_folder/music.mp3`` avec les permissions ``644`` possédé par ``françois`` et associé au groupe ``boys``.
#. Est-ce que ``quentin`` peut écouter le morceau? Qu'en est-il pour ``brigitte``? Quelles sont les permissions requises pour ``/shared_folder`` afin qu'ils y accèdent?
#. Supposons maintenant que ``quentin`` et ``brigitte`` sont en train d'écouter le morceau MP3. Observant qu'il ne lui reste que peu d'espace disque disponible, ``françois`` supprime le fichier ``/shared_folder/music.mp3`` avec la commande ``rm``.
#. Que se passe-t-il pour ``brigitte`` et ``quentin``?
#. ``quentin`` ferme ensuite le fichier avec ``close(2)``. Qui a encore accès au fichier?
#. ``brigitte`` ferme à son tour son file descriptor. Qui a encore accès au fichier?
\ No newline at end of file
...@@ -13,6 +13,6 @@ int main(int argc, char *argv[]) { ...@@ -13,6 +13,6 @@ int main(int argc, char *argv[]) {
int d = 42; int d = 42;
char *tab = malloc(20 * sizeof(char)); char *tab = malloc(20 * sizeof(char));
int *res = (int *) tab; int *res = (int *) tab;
*tab = f(&cours, d); *res = f(&cours, d);
return 0; return 0;
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter