Local Socket Example (The GNU C Library)

Previous: , Up: The Local Namespace [Contents][Index]


16.5.3 Example of Local-Namespace Sockets

Here is an example showing how to create and name a socket in the local namespace.

#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.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_LOCAL, SOCK_DGRAM, 0);
 if (sock < 0)
 {
 perror ("socket");
 exit (EXIT_FAILURE);
 }
 /* Bind a name to the socket. */
 name.sun_family = AF_LOCAL;
 strncpy (name.sun_path, filename, sizeof (name.sun_path));
 name.sun_path[sizeof (name.sun_path) - 1] = '0円';
 /* The size of the address is
 the offset of the start of the filename,
 plus its length (not including the terminating null byte).
 Alternatively you can just do:
 size = SUN_LEN (&name);
 */
 size = (offsetof (struct sockaddr_un, sun_path)
 + strlen (name.sun_path));
 if (bind (sock, (struct sockaddr *) &name, size) < 0)
 {
 perror ("bind");
 exit (EXIT_FAILURE);
 }
 return sock;
}

AltStyle によって変換されたページ (->オリジナル) /