From 351092d81ff71d5cdce35b7360336e32e40c9569 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 10 Mar 2008 16:00:39 +0100 Subject: [PATCH] Ignore all common signals Just retry OpenEvent a couple of times with a "yield" in between --- .../lib/My/SafeProcess/safe_kill_win.cc | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc index a9a4b08b9e5..12609993562 100755 --- a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc +++ b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc @@ -23,6 +23,7 @@ #include #include +#include int main(int argc, const char** argv ) { @@ -30,6 +31,10 @@ int main(int argc, const char** argv ) HANDLE shutdown_event; char safe_process_name[32]= {0}; int retry_open_event= 100; + /* Ignore any signals */ + signal(SIGINT, SIG_IGN); + signal(SIGBREAK, SIG_IGN); + signal(SIGTERM, SIG_IGN); if (argc != 2) { fprintf(stderr, "safe_kill \n"); @@ -37,31 +42,20 @@ int main(int argc, const char** argv ) } pid= atoi(argv[1]); - _snprintf(safe_process_name, sizeof(safe_process_name), "safe_process[%d]", pid); + _snprintf(safe_process_name, sizeof(safe_process_name), + "safe_process[%d]", pid); /* Open the event to signal */ while ((shutdown_event= OpenEvent(EVENT_MODIFY_STATE, FALSE, safe_process_name)) == NULL) { - fprintf(stderr, "Failed to open shutdown_event '%s', error: %d\n", - safe_process_name, GetLastError()); - - /* Just check to see if pid exists */ - HANDLE pid_handle= OpenProcess(SYNCHRONIZE, FALSE, pid); - if (pid_handle == NULL) - fprintf(stderr, "Could not open process with pid %d, error: %d\n", pid); - else - CloseHandle(pid_handle); - if (retry_open_event--) - { - fprintf(stderr, "retrying...\n"); - Sleep(100); /* In milli seconds */ - } + Sleep(0); /* yield */ else { - fprintf(stderr, "No more retries, exiting"); - exit(1); + fprintf(stderr, "Failed to open shutdown_event '%s', error: %d\n", + safe_process_name, GetLastError()); + exit(3); } } @@ -70,7 +64,7 @@ int main(int argc, const char** argv ) fprintf(stderr, "Failed to signal shutdown_event '%s', error: %d\n", safe_process_name, GetLastError()); CloseHandle(shutdown_event); - exit(1); + exit(4); } CloseHandle(shutdown_event); exit(0);