Re: signals on windows

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: signals on windows
Дата
Msg-id 000f01c38f21$aeebfd60$6401a8c0@DUNSLANE
обсуждение исходный текст
Ответ на Re: signals on windows  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-hackers-win32
Thanks. I think for now the most portable and simple thing we can do in
initdb is simply to have the signal handler set a flag that is checked for
every so often. That's what my current code does. See
http://www.dunslane.net/~andrew/initdb.c

If you think this won't work on Windows please let me know - I'm quite
confident it will work elsewhere.

cheers

andrew


----- Original Message -----
From: "Marsh Ray" <marsh-pg@mysteray.com>
To: "Bruce Momjian" <pgman@candle.pha.pa.us>
Cc: "Andrew Dunstan" <andrew@dunslane.net>; "pgsql-hackers-win32"
<pgsql-hackers-win32@postgresql.org>
Sent: Friday, October 10, 2003 12:09 AM
Subject: Re: [pgsql-hackers-win32] signals on windows


> Hi,
> This MS documentation looks like it's slightly retro. I've been trying
> to decypher this stuff myself for a decade, so I might offer some points:.
>
> >Andrew Dunstan wrote:
> >
> >
> >> *   Note   SIGINT is not supported for any Win32 application, including
> >>*   Windows 98/Me and Windows NT/2000/XP.When a CTRL+C interrupt occurs,
> >> *   Win32 operating systems generate a new thread to specifically
handle
> >> *   that interrupt. This can cause a single-thread application such as
> >>UNIX,
> >> *   to become multithreaded, resulting in unexpected behavior.
> >>
> Odd. First they say it's not supported, then they go on to define how it
> works. Probably what they mean is that Win32 _GUI_ applications have no
> way to have receive SIGINT from Ctrl+C, because that's handled as just
> another keystroke by the GUI system (sometimes you'll see the older
> documentation use Win32 as a term implying GUI).  Win32 console apps
> appear to respond to Ctrl+C much like unices do.
>
> Since Win32 will create a new thread for you, if you prepare your app
> for that, I don't see a reason you can't make pure Win32 system calls
> from that thread. You mainly want to be careful to not confuse a
> single-threaded C runtime. Note that the doc
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_CRT_signal.asp
> says not to "use any function that generates a system call (e.g.,
> *_getcwd*, *time*)", it doesn't say not to make system calls themselves.
> It doesn't look like a "signal" is not a kernel primitive on NT, it's a
> feature of the CRT implemented in userspace with lower-level OS
primitives.
>
> >> * I have no idea how to handle this. (Strange they call UNIX an
> >>application!)
> >> * So this will need some testing on Windows.
> >> * One alternative might be to set a flag that we periodically check
for.
> >>
> A kernel Event
>
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/ba
se/createevent.asp)
> is a common tool for this sort of thing.
>
> - Marsh


В списке pgsql-hackers-win32 по дате отправления:

Предыдущее
От: Marsh Ray
Дата:
Сообщение: Re: signals on windows
Следующее
От: Andrew Dunstan
Дата:
Сообщение: more setlocale fun