From: Jacques Garrigue <garrigue@math.nagoya-u.ac.jp>
To: Julien.Narboux@inria.fr
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] The best way to circumvent the lack of Thread.kill ?
Date: Wed, 02 Nov 2005 22:00:53 +0900 (JST) [thread overview]
Message-ID: <20051102.220053.101871063.garrigue@math.nagoya-u.ac.jp> (raw)
In-Reply-To: <4368A16B.4050703@inria.fr>
From: Julien Narboux <Julien.Narboux@inria.fr>
> >How about forking off the theorem prover as a separate process? You
> >can communicate the result back to the main program using either a
> >status code or a pipe (depending on how complex the result structure
> >is). The interrupt button just kills the forked process.
> >
> Yes, but the problem is that under the native windows port (see
> http://caml.inria.fr/pub/docs/manual-ocaml/manual035.html) :
>
> "kill, pause not implemented (no inter-process signals in Windows)"
The workaround I found a long time ago is to embed a thread in the
forked process that waits for "signals" on a pipe.
If you look at byterun/startup.c and byterun/win32.c you will
see that it is started when there is a CAMLSIGPIPE in the environment.
This is used by otherlibs/labltk/browser/shell.ml on windows.
This already works on any bytecode application.
For native code, you could just link that bit of C code, and start it
by hand.
Another way to do it, which is used by ocamlwin, is to send SIGINT
through then win32 function GenerateConsoleCtrlEvent. But this will
just interrupt, not kill. And I didn't know that function at that
time...
Jacques Garrigue
next prev parent reply other threads:[~2005-11-02 12:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-02 9:52 Julien Narboux
2005-11-02 10:54 ` [Caml-list] " Richard Jones
2005-11-02 11:22 ` Julien Narboux
2005-11-02 13:00 ` Jacques Garrigue [this message]
2005-11-02 12:57 ` Julien Narboux
2005-11-02 13:23 ` Gerd Stolpmann
2005-11-02 14:00 ` Gerd Stolpmann
2005-11-02 14:32 ` Julien Narboux
2005-11-02 15:07 ` Gerd Stolpmann
2005-11-02 14:53 ` David Teller
2005-11-02 16:24 ` Alessandro Baretta
2005-11-02 17:00 ` David Teller
2005-11-02 18:43 ` Alessandro Baretta
2005-11-02 18:29 ` David Teller
2005-11-08 20:36 ` Jonathan Bryant
2005-11-09 1:18 ` Grégory Guyomarc'h
2005-11-09 12:37 ` Richard Jones
[not found] ` <4371A0A6.4010306@laposte.net>
2005-11-09 13:32 ` Jonathan Bryant
2005-11-02 11:33 EL CHAAR Rabih SGAM/AI/SAM
2005-11-08 3:23 ` Igor Pechtchanski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051102.220053.101871063.garrigue@math.nagoya-u.ac.jp \
--to=garrigue@math.nagoya-u.ac.jp \
--cc=Julien.Narboux@inria.fr \
--cc=caml-list@yquem.inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox