I was disappointed to discover Mac OS X 10.9.5 lacks an mksock command, in order to create a Unix domain socket. Now, usually applications will create these as needed, yet sometimes it is useful to create one manually (such as for testing purposes.) So I wrote my own mksock command, code is below:
#include <errno.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/un.h> #include <unistd.h> int main(int argc, char **argv) { if (argc < 2) { fprintf(stderr, "usage: mksock PATH...\n"); return 1; } struct sockaddr_un addr; int rc = 0; for (int i = 1; i < argc; i++) { memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, argv[i], sizeof(addr.sun_path)); addr.sun_path[sizeof(addr.sun_path)-1] = 0; const int fd = socket(PF_UNIX, SOCK_STREAM, 0); if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) != 0) { fprintf(stderr, "mksock: %s: %s\n", addr.sun_path, strerror(errno)); rc = 1; } close(fd); } return rc; }