let continue_last_process finish = with_blocked_sigchld (fun () -> try clear_process_table(); let p = last_process() in begin match p.status with | Some (WSTOPPED s) -> kill p.pid sigcont | _ -> () (* nécessairement None après clear_proces_table *) end; finish p with Not_found -> prerr_endline "No bg jobs"; 127 ) ();; |
command_wait
.
let fg() = continue_last_process (fun p -> Printf.eprintf "Foregrounded job [%d] %s\n" p.pid p.cmd; flush Pervasives.stderr; remove_process p.pid; finish_fg p);; |