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