NN_IPC(7)

πŸ“¦
version 1.2.2 Β· 5 versions
, in fedora 44

πŸ’– NN_IPC(7) πŸ’–

okay bestie, gather round, we're talking about nn_ipc β€” the inter-process transport mechanism ✨ and honestly? it's giving "my two apps live in the same house and they text each other through the walls" πŸ πŸ’Œ

this is the nn_ipc(7) page from nanomsg version 1.2.2 and i'm gonna walk you through it like we're sharing airpods on the bus 🎧🫢


✨ SYNOPSIS ✨

#include <nanomsg/nn.h>

#include <nanomsg/ipc.h>

periodt, that's the whole header situation πŸ’…


🌸 DESCRIPTION 🌸

so like, the inter-process transport is the one that lets you send messages between processes that are all chillin' on a single box πŸ–₯οΈπŸ’•. it doesn't do networks, it doesn't do other machines, it's a stay at home kind of transport and we respect that.

the way it actually works under the hood is that it uses the native IPC mechanism provided by the local operating system, which means the IPC addresses are, and i cannot stress this enough, OS-specific 😭 like they literally change depending on where you're running. no cap.

🐧 on POSIX-compliant systems

UNIX domain sockets are what's happening here, and IPC addresses are file references πŸ“βœ¨

and bestie, listen β€” both flavors work:

  • relative paths, like ipc://test.ipc
  • absolute paths, like ipc:///tmp/test.ipc
⚠️ also note (and this is the part people forget and then cry about): the access rights on the IPC files must be set in such a way that the appropriate applications can actually use them. if your permissions are a mess, your vibes are a mess, and your messages are not arriving. that's on you 🫠

πŸͺŸ on Windows

named pipes, babes. that's the move. πŸŽ€

the IPC address is an arbitrary case-insensitive string containing any character except for backslash 🚫\

and internally? the address ipc://test means that the named pipe \\.\pipe\test will be used. like, that's the translation, that's the mapping, write it down πŸ“


πŸ”₯ EXAMPLE πŸ”₯

here's the iconic little two-liner, look at her go πŸ‘‘

nn_bind (s1, "ipc:///tmp/test.ipc");
nn_connect (s2, "ipc:///tmp/test.ipc");

one binds, one connects, same address, they're in love, they're communicating, it's beautiful πŸ˜­πŸ’–


πŸ‘€ SEE ALSO πŸ‘€

go read these next, i'm obsessed:


🫢 AUTHORS 🫢

Martin Sustrik <sustrik@250bpm.com> β€” the icon, the legend, the main character who wrote this πŸ‘‘β­


and that's the whole page, bestie!! this was the NN_IPC(7) manual page from nanomsg 1.2.2, dated 2026-01-16 🌈 mwah, go forth and IPC responsibly πŸ’…βœ¨

πŸ“¦ where this page comes from