TD 4 |
type redirection = In_to_file of string (* < file *) | Out_to_file of string (* > file *) | Err_to_file of string (* 2> file *) | Out_append_file of string (* >> file *) | Err_to_out ;; (* 2>&1 *) |
command_fg_redirect
qui prend en argument
une commande, ses arguments sous forme d'un tableau et une liste de
redirections et qui exécute la commande après avoir effectué les
redirections nécessaires puis attend sa terminaison.cat
[||] [ In_to_file input
; Out_append_file output
]
redirige l'entrée standard de la commande cat
vers le fichier de
nom input
et la sortie standard vers le fichier de nom output
./tmp/foo
; Err_to_out]
redirige la sortie standard et la sortie d'erreur vers le fichier
/tmp/foo
et
command_fg_redirect cmd [||] [ Err_to_out ; Out_to_file /tmp/foo
]
redirige la sortie d'erreur vers le stdout
d'origine et redirige
stdout
vers /tmp/foo
.
mon_system
qui exécute une commande passée
en argument sous la forme d'une chaîne de caractères en passant
cette dernière en argument de la commande /bin/sh -c
. Cette
fonction se termine quand la commande termine. Pendant l'exécution
de la commande le signal SIGCHLD est bloqué et les signaux SIGINT et
SIGQUIT sont ignorés. La fonction retourne la valeur de retour de la
commande ou lève une exception en cas d'erreur.sleep 10
. En particulier, vérifiez que le signal
envoyé par ^C
est bien reçu par sleep
mais pas par votre
programme.
pipeline_commands
qui prend en argument une
liste de couples (cmd,args)
et qui redirige la sortie standard de la
première commande vers l'entrée de la seconde et ainsi de suite.cat
,[||]);(grep
,[|"test"|]);(wc
,[|"-l"|])]
affiche le nombre de lignes qui contiennent le texte test
lu sur
l'entrée standard.wait
lève une exception
ECHILD
). Nous supposerons également, que l'appel à wait
ne
peut pas être interrompu par un signal (par exemple SIGCHLD
), sauf
en cas d'erreur grave, ce qui termine de toute façon le programme.
This document was translated from LATEX by HEVEA and HACHA.