open Sys;; open Unix;; open Printf;; let exec_failed_retcode = 127 (* Le fils n'a pas pu être lancé *);; let mon_exec cmd args = try execvp cmd (Array.append [| cmd |] args); assert false with Unix_error (e, _, s) -> eprintf "Exec failed for command %s: %s %s\n" (String.concat " " (cmd :: Array.to_list args)) (error_message e) s; flush Pervasives.stderr; exit exec_failed_retcode |
mon_exec
tout comme execvp
ne retourne jamais.
On l'a fait suivre par assert false
pour relacher la contrainte de
typage (en fait execvp
pourrait avec un type de retour non contraint 'a
).