Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sde2:laboratoare:06_rust [2023/04/10 21:40]
cristiana.andrei [Sujets]
sde2:laboratoare:06_rust [2023/04/11 08:14] (current)
cristiana.andrei [Assignment]
Line 1: Line 1:
 ====== TP 06 - Signaux ====== ====== TP 06 - Signaux ======
 +===== Assignment ===== 
 +<note warning>​ 
 +Vous devez **accepter** le assignment d'ici et travailler avec ce repository: [[https://​classroom.github.com/​a/​qX8WGLxE|Lab6]] 
 +</​note>​
 ===== Objectifs ===== ===== Objectifs =====
 Le but de ce TP est d'​apprendre à utiliser ​ Le but de ce TP est d'​apprendre à utiliser ​
Line 101: Line 104:
 ===== Sujets ===== ===== Sujets =====
   - Compilez ex1. Exécutez-le et utilisez la commande shell kill pour lui envoyer des signaux.   - Compilez ex1. Exécutez-le et utilisez la commande shell kill pour lui envoyer des signaux.
-    - Modifiez-le pour qu'à chaque fois qu'il reçoit un signal, il imprime une lettre différente : a - SIGHUP, b - SIGINT, n - SIQUIT, s - SIGTRAP, espace - SIGFPE. Écrivez un autre programme en Rust qui lui envoie des signaux pour qu'il imprime ''​bannanas bannanas''​. Le deuxième programme reçoit le pid de destination à partir d'un argument de ligne de commande.+    - Modifiez-le pour qu'à chaque fois qu'il reçoit un signal, il imprime une lettre différente : a - SIGHUP, b - SIGINT, n - SIQUIT, s - SIGTRAP, espace - SIGFPE. Écrivez un autre programme en Rust qui lui envoie des signaux pour qu'il imprime ''​bannanas bannanas''​. Le deuxième programme reçoit le pid de destination à partir d'un argument de ligne de commande. ​On utlise la fonction [[https://​docs.rs/​nix/​latest/​nix/​sys/​signal/​fn.kill.html|kill]] pour envoyer un certain signal a un certain processus, en mentionant le PID et le type de signal: <code c>  kill(Pid::​from_raw(/​*ici on met le pid*/), Signal::/​*type de signal*/); </​code>​ //Hint: Pour trouver le pid du processus ex1, utilisez la commande **top** dans le terminal. //
   - Créez un programme qui fait fork et entre dans une boucle infinie (avec un sleep). Son enfant attend quelques secondes puis sort. Écrivez un message à l'​écran lorsque l'​enfant sort. Utilisez SIGCHLD.   - Créez un programme qui fait fork et entre dans une boucle infinie (avec un sleep). Son enfant attend quelques secondes puis sort. Écrivez un message à l'​écran lorsque l'​enfant sort. Utilisez SIGCHLD.
   - Essayez de stocker une valeur dans un pointeur null. Lors de la réception du signal SIGSEGV, imprimez l'​adresse où le défaut de segmentation s'est produit.   - Essayez de stocker une valeur dans un pointeur null. Lors de la réception du signal SIGSEGV, imprimez l'​adresse où le défaut de segmentation s'est produit.
      - Essayez de stocker une valeur dans un pointeur pour une constante. Maintenant, voyez ce qui se passe.      - Essayez de stocker une valeur dans un pointeur pour une constante. Maintenant, voyez ce qui se passe.
  
-===== Solutions ===== 
-[[https://​github.com/​UPB-FILS-SdE2/​Solutions/​tree/​main/​tp5|Solutions]] 
  
sde2/laboratoare/06_rust.1681152014.txt.gz · Last modified: 2023/04/10 21:40 by cristiana.andrei
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0