signals on windows

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема signals on windows
Дата
Msg-id 3F8191E2.7060801@dunslane.net
обсуждение исходный текст
Ответы Re: signals on windows  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-hackers-win32
here's what I was going to put into initdb.c for signal handling -
comments welcome - as I think about it more I'm strongly leaning to the
"set a flag" solution - we'd check for the flag before outputting "ok"
in various places.

cheers

andrew

/*
 * signal handler in case we are interrupted.
 *
 * The Windows runtime docs at
 * http://msdn.microsoft.com/library/en-us/vclib/html/_crt_signal.asp
 * specifically forbid a number of things being done from a signal handler,
 * most of which we do :-) (specifically, we do IO, mem allocation and
system
 * calls). Also note the behaviour of Windows with SIGINT, which says this:
 *   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.
 * 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.
 *
 */

static void
trapsig(int signum)
{
  fputs("Caught Signal.\n",stderr);
  exit_nicely();
}

[snip]

#ifdef SIGHUP
    pqsignal(SIGHUP,trapsig);
#endif
#ifdef SIGINT
    pgsignal(SIGINT,trapsig);
#endif
#ifdef SIGQUIT
    pgsignal(SIGQUIT,trapsig);
#endif
#ifdef SIGTERM
    pgsignal(SIGTERM,trapsig);
#endif





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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: initdb
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: lib problems