--- /dev/null
+#include <signal.h>
+#include <stdio.h>
+
+#include "signal.h"
+
+void _signal_handler (int sig) {
+ printf ("signal: %d\n", sig);
+}
+
+void (*sigh_hangup) (int) = &_signal_handler;
+void (*sigh_terminate) (int) = &_signal_handler;
+
+void __attribute__((constructor)) init_signal (void)
+{
+#ifdef _POSIX
+ signal (SIGHUP, sigh_hangup);
+#endif /* _POSIX */
+ signal (SIGTERM, sigh_terminate);
+}
+
+/* vi:set tabstop=4 expandtab shiftwidth=4: this line set vi mode */
/* depend: */
/* cflags: */
-/* linker: color.o debug.o server.o */
+/* linker: color.o debug.o server.o signal.o */
#include <assert.h>
#include <stdio.h>
#include "debug.h"
#include "server.h"
+#include "signal.h"
/* types */
char *progname = NULL;
int port = 8080;
+socket_t sock = INVALID_SOCKET;
/* help function */
return ret;
}
+void stop_server (__attribute__((unused)) int sig)
+{
+ if (sock != INVALID_SOCKET) {
+ close_listening_socket (sock);
+ exit (0);
+ }
+}
+
/* main function */
int main (int argc, char *argv[])
{
int i = 0;
- int ret = 0;
/* program name */
}
VERBOSE (DEBUG, fprintf (stdout, "Initializing socket\n"));
- socket_t sock = open_listening_socket (port);
- if (sock == (socket_t)-1) {
+ sock = open_listening_socket (port);
+ if (sock == INVALID_SOCKET) {
VERBOSE (ERROR, fprintf (stderr, "Can't open listening socket\n"));
return 1;
}
VERBOSE (INFO, fprintf (stdout, "Listening socket on port %d\n", port));
- sleep (2);
+ sleep (20);
VERBOSE (DEBUG, fprintf (stdout, "Closing socket\n"));
close_listening_socket (sock);
- return ret;
+ return 2;
}
// test: webserver.exe -h
// test: webserver.exe -v 2>&1 | grep -q 'missing verbose level'
// test: webserver.exe -p 2>&1 | grep -q 'missing port number'
// test: webserver.exe -p -1 2>&1 | grep -q 'incorrect port number'
-// test: webserver.exe | grep -q 'Listening socket on port 8080'
-// test: webserver.exe -p 8000 | grep -q 'Listening socket on port 8000'
+// test: ( webserver.exe & pid=$!; ( sleep 1; kill -TERM $pid ) ) | grep -q 'Listening socket on port 8080'
+// test: ( webserver.exe -p 8008 & pid=$!; ( sleep 1; kill -TERM $pid ) ) | grep -q 'Listening socket on port 8008'
+// test: webserver.exe & pid=$!; sleep 1; kill -INT $pid; ps aux | grep -q [w]ebserver.exe && kill -TERM $pid || rc=1; test x$rc = x1
/* vim: set ts=4 sw=4 et: */