summaryrefslogtreecommitdiff
path: root/main.c
blob: 2a10b7376050a6df7bdbf993b02e08d02c0359f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "common.h"
#include <pthread.h>
#include <sys/socket.h>
#include <unistd.h>
#include <error.h>
#include <errno.h>

int main(void)
{
	struct server *server = NULL;
	struct client *client = NULL;
	int sv[2];
	int pid;
	if (socketpair(AF_LOCAL, SOCK_STREAM, 0, sv) < 0) {
		error(0, errno, "failed to pair socket");
	}

	switch ((pid = fork())) {
	case 0:
		close(sv[0]);
		client = client_create(sv[1]);
		break;
	case -1:
		error(1, errno, "fork");
		break;
	default:
		close(sv[1]);
		server = server_create(sv[0]);
		break;
	}

	if (server)
		server_destroy(server);
	if (client)
		client_destroy(client);

	return 0;
}