diff options
author | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-03-22 20:06:05 +0000 |
---|---|---|
committer | Jérôme Vouillon <Jerome.Vouillon@pps.jussieu.fr> | 1997-03-22 20:06:05 +0000 |
commit | 4b966034a59b8ab674a6fd1600e50d891cfed2f9 (patch) | |
tree | 75c73079fda5a946ea17e00a6c8ecab9c3e52a59 | |
parent | 09860ca9e553bd9ec680daffdd3e6e5a52a55b3b (diff) |
Il faut pouvoir differencier un programme qui vient de se lancer d'un
programme qui a "forke'".
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1437 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | byterun/debugger.c | 1 | ||||
-rw-r--r-- | debugger/program_management.ml | 12 |
2 files changed, 7 insertions, 6 deletions
diff --git a/byterun/debugger.c b/byterun/debugger.c index 237c24ef1..d615e485e 100644 --- a/byterun/debugger.c +++ b/byterun/debugger.c @@ -76,6 +76,7 @@ static void open_connection() if (!debugger_in_use) register_global_root((value *) &dbg_in); dbg_out = open_descr(dbg_socket); if (!debugger_in_use) register_global_root((value *) &dbg_out); + if (!debugger_in_use) putword(dbg_out, -1); /* first connection */ putword(dbg_out, getpid()); flush(dbg_out); } diff --git a/debugger/program_management.ml b/debugger/program_management.ml index 8619017ae..dbd2d8c5c 100644 --- a/debugger/program_management.ml +++ b/debugger/program_management.ml @@ -43,16 +43,14 @@ let control_connection pid fd = end (* Accept a connection from another process. *) -let loaded = ref false - let accept_connection continue fd = let (sock, _) = accept fd.io_fd in let io_chan = io_channel_of_descr sock in let pid = input_binary_int io_chan.io_in in - if not !loaded then begin - (*loaded := true;*) - new_checkpoint pid io_chan; - Input_handling.add_file io_chan (control_connection pid); + if pid = -1 then begin + let pid' = input_binary_int io_chan.io_in in + new_checkpoint pid' io_chan; + Input_handling.add_file io_chan (control_connection pid'); continue () end else begin @@ -96,6 +94,8 @@ let close_connection () = end (*** Kill program. ***) +let loaded = ref false + let kill_program () = loaded := false; close_connection (); |