Unix domain sockets are your friend.
A Unix domain connector or an IPC socket (interprocess communication socket) is a data transfer endpoint that is similar to an Internet socket but does not use a network protocol for communication. It is used in POSIX operating systems for interprocess communication communication.
You reserve a name for your communication channel, for example /myapp/ipc , and then both processes open this address using a UNIX socket:
struct sockaddr_un local; int len; s = socket(AF_UNIX, SOCK_STREAM, 0); local.sun_family = AF_UNIX; strcpy(local.sun_path, "/myapp/ipc"); len = strlen(local.sun_path) + sizeof(local.sun_family); bind(s, (struct sockaddr *)&local, len);
Now you can use listen or connect or something else in the socket family. This works a little, but it is the best way to achieve IPC on Linux.
Since Erlang is just a good language for specifying small servers (processes) that exchange data over named pipes (processes), this model should feel comfortable for you.
source share