home *** CD-ROM | disk | FTP | other *** search
- #include <stddef.h>
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <sys/socket.h>
- #include <sys/un.h>
-
- int
- make_named_socket (const char *filename)
- {
- struct sockaddr_un name;
- int sock;
- size_t size;
-
- /* Create the socket. */
-
- sock = socket (PF_UNIX, SOCK_DGRAM, 0);
- if (sock < 0)
- {
- perror ("socket");
- exit (EXIT_FAILURE);
- }
-
- /* Bind a name to the socket. */
-
- name.sun_family = AF_FILE;
- strcpy (name.sun_path, filename);
-
- /* The size of the address is
- the offset of the start of the filename,
- plus its length,
- plus one for the terminating null byte. */
- size = (offsetof (struct sockaddr_un, sun_path)
- + strlen (name.sun_path) + 1);
-
- if (bind (sock, (struct sockaddr *) &name, size) < 0)
- {
- perror ("bind");
- exit (EXIT_FAILURE);
- }
-
- return sock;
- }
-