This shows you the differences between two versions of the page.
|
sde2:laboratoare:05_new [2022/03/28 19:55] alexandru.radovici |
sde2:laboratoare:05_new [2022/04/12 00:25] (current) alexandru.radovici |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== TP 04 - Systems de fichiers ====== | + | ====== TP 04 - Processus ====== |
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| Line 7: | Line 7: | ||
| * Utiliser dup2 | * Utiliser dup2 | ||
| * Utiliser fork et exec | * Utiliser fork et exec | ||
| + | |||
| ===== Bibliographie ===== | ===== Bibliographie ===== | ||
| Line 13: | Line 14: | ||
| * fork [[https://docs.rs/nix/0.23.1/nix/unistd/fn.fork.html]] | * fork [[https://docs.rs/nix/0.23.1/nix/unistd/fn.fork.html]] | ||
| * Unix functions [[https://docs.rs/nix/0.23.1/nix/unistd/index.html]] | * Unix functions [[https://docs.rs/nix/0.23.1/nix/unistd/index.html]] | ||
| + | |||
| + | ===== Sugestions ===== | ||
| + | <note> | ||
| + | Transformer un String en CString peut être fait en utilisant | ||
| + | |||
| + | <code rust> | ||
| + | CString::new("ls").unwrap() | ||
| + | </code> | ||
| + | </note> | ||
| + | |||
| + | <note> | ||
| + | <code rust> | ||
| + | // utilisé pour trouver le descripteur de fichier | ||
| + | use std::os::unix::io::AsRawFd; | ||
| + | </code> | ||
| + | </note> | ||
| ===== Sujets ===== | ===== Sujets ===== | ||
| Line 20: | Line 37: | ||
| - Dans le processus enfant, attendez quelques secondes et imprimez ensuite un message. | - Dans le processus enfant, attendez quelques secondes et imprimez ensuite un message. | ||
| - Dans le processus parent, affichez "En attente de la sortie du processus enfant", attendez qu'il se termine (waitpid) et imprimez un message avant de quitter. | - Dans le processus parent, affichez "En attente de la sortie du processus enfant", attendez qu'il se termine (waitpid) et imprimez un message avant de quitter. | ||
| - | - Dans le processus enfant, exécutez la commande "ls -l". Utilisez execvp. Le premier argument doit être identique à la commande. | + | - Dans le processus enfant, exécutez la commande "ls -l". Utilisez execvp. Le premier argument doit être identique à la commande. |
| - | - Redirigez la sortie du processus enfant (fd 1) vers un fichier appelé output.txt. Ouvrez le fichier en écriture et utilisez dup2. | + | - Redirigez la sortie du processus enfant (fd 1) vers un fichier appelé output.txt. Ouvrez le fichier en écriture et utilisez dup2. |
| - N'écrasez pas le fichier output.txt, ajoutez-y des données (fs :: OpenOptions) | - N'écrasez pas le fichier output.txt, ajoutez-y des données (fs :: OpenOptions) | ||
| - | | + | |