This shows you the differences between two versions of the page.
sde2:laboratoare:06_rust [2023/04/10 14:59] 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 100: | Line 103: | ||
===== Sujets ===== | ===== Sujets ===== | ||
- | - Clonez le repository [[https://github.com/UPB-FILS-SdE2/Solutions/tree/main|Solutions]] et compilez ex2. 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. | ||
- | - De prins segf fault si printat adresa la care se intampla seg fault (la pointer null si la const) | + | - 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. | ||
- | ===== Solutions ===== | ||
- | [[https://github.com/UPB-FILS-SdE2/Solutions/tree/main/tp5|Solutions]] | ||