Differences

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

Link to this comparison view

sde2:laboratoare:05_new [2022/03/28 16:43]
alexandru.radovici created
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 =====
   * Understanding ownership [[https://​doc.rust-lang.org/​book/​ch04-00-understanding-ownership.html|en]],​ [[https://​jimskapt.github.io/​rust-book-fr/​ch04-00-understanding-ownership.html|fr]]- ​   * Understanding ownership [[https://​doc.rust-lang.org/​book/​ch04-00-understanding-ownership.html|en]],​ [[https://​jimskapt.github.io/​rust-book-fr/​ch04-00-understanding-ownership.html|fr]]- ​
   * Using Box<​T>​ to Point to Data on the Heap [[https://​doc.rust-lang.org/​book/​ch15-01-box.html|en]],​ [[https://​jimskapt.github.io/​rust-book-fr/​ch15-01-box.html|fr]]   * Using Box<​T>​ to Point to Data on the Heap [[https://​doc.rust-lang.org/​book/​ch15-01-box.html|en]],​ [[https://​jimskapt.github.io/​rust-book-fr/​ch15-01-box.html|fr]]
-  * std::fs functions ​[[https://doc.rust-lang.org/stable/std/​fs/​index.html]] +  * fork [[https://docs.rs/nix/0.23.1/nix/unistd/fn.fork.html]] 
-  * File [[https://​doc.rust-lang.org/stable/std/fs/struct.File.html]] +  * Unix functions ​[[https://docs.rs/nix/0.23.1/nix/unistd/index.html]] 
-  * Metadata ​[[https://doc.rust-lang.org/stable/std/​fs/​struct.Metadata.html]] + 
-  * MetadataExt [[https://doc.rust-lang.org/stable/​std/​fs/​struct.Metadata.html#​impl-MetadataExt]] +===== Sugestions ===== 
-  * Permissions [[https://doc.rust-lang.org/stable/std/​fs/​struct.Permissions.html]] +<​note>​ 
-  * PermissionsExt [[https://​doc.rust-lang.org/stable/std/os/unix/fs/​trait.PermissionsExt.html]] +Transformer un String en CString peut être fait en utilisant  
-  * Linux permissions [[https://​en.wikipedia.org/​wiki/​Chmod]]+ 
 +<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 =====
-  ​+  ​- Écrivez un programme qui alloue dynamiquement un String à l'aide de Box. Lisez un texte au clavier et ajoutez-le aux String allouée. Imprimez le String.  
 +  - Créez un programme qui utilise fork pour créer un processus enfant.  
 +    - dans le processus parent, imprimez son PID (des parents) et le PID de l'​enfant. Dans le processus enfant, imprimez le PID du parent et son PID.  
 +    - 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 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.  
 +    - N'​écrasez pas le fichier output.txt, ajoutez-y des données (fs :: OpenOptions)  
sde2/laboratoare/05_new.1648474992.txt.gz · Last modified: 2022/03/28 16:43 by alexandru.radovici
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