+#if HAVE_UNISTD_H
+ char str[80];
+
+ sprintf(str, "%lld", (long long) getpid());
+ yaz_log_init_prefix(str);
+#endif
+}
+
+#if HAVE_UNISTD_H
+static pid_t process_group = 0;
+static int sig_received = 0;
+
+static void sig_usr1_handler(int signo)
+{
+ sig_received = signo;
+ if (routerp)
+ routerp->stop(signo);
+}
+
+static void sig_term_handler(int signo)
+{
+ sig_received = signo;
+ if (routerp)
+ {
+ routerp->stop(signo);
+ }
+}
+#endif
+
+static void work_common(void *data)
+{
+ set_log_prefix();
+#if HAVE_UNISTD_H
+ process_group = getpgid(0); // save process group ID
+
+ signal(SIGTERM, sig_term_handler);
+ signal(SIGUSR1, sig_usr1_handler);
+#endif
+ routerp = (mp::RouterXML*) data;
+ routerp->start();