This shows you the differences between two versions of the page.
|
sde2:laboratoare:06_rust [2023/04/08 18:26] cristiana.andrei |
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. | ||
| + | - 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]] | ||