= nng_ipc(7) // // Copyright 2019 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This document is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this // file was obtained (LICENSE.txt). A copy of the license may also be // found online at https://opensource.org/licenses/MIT. // == NAME nng_ipc - IPC transport == SYNOPSIS [source,c] ---- #include int nng_ipc_register(void); ---- == DESCRIPTION (((IPC)))(((transport, _ipc_))) The ((_ipc_ transport)) provides communication support between _nng_ sockets within different processes on the same host. For POSIX platforms, this is implemented using ((UNIX domain sockets)). For Windows, this is implemented using Windows ((Named Pipes)). Other platforms may have different implementation strategies. // We need to insert a reference to the nanomsg RFC. === Registration The _ipc_ transport is generally built-in to the _nng_ core, so no extra steps to use it should be necessary. === URI Format (((URI, `ipc://`))) This transport uses URIs using the scheme `ipc://`, followed by a path name in the file system where the socket or named pipe should be created. TIP: On Windows, all names are prefixed by `\\.\pipe\` and do not reside in the normal file system. On POSIX platforms, the path is taken literally, and is relative to the current directory, unless it begins with `/`, in which case it is relative to the root directory. NOTE: When using relative paths on POSIX systems, the address used and returned in properties like `NNG_OPT_LOCADDR` and `NNG_OPT_URL` will also be relative. Consequently, they will only be interpreted the same by processes that have the same working directory. To ensure maximum portability and safety, absolute paths are recommended whenever possible. NOTE: If compatibility with legacy _nanomsg_ applications is required, then pathnames must not be longer than 122 bytes, including the final `NUL` byte. This is because legacy versions of _nanomsg_ cannot express URLs longer than 128 bytes, including the `ipc://` prefix. === Socket Address When using an xref:nng_sockaddr.5.adoc[`nng_sockaddr`] structure, the actual structure is of type xref:nng_sockaddr_ipc.5.adoc[`nng_sockaddr_ipc`]. === Transport Options The following transport options are supported by this transport, where supported by the underlying platform. * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PEER_GID[`NNG_OPT_IPC_PEER_GID`] * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PEER_PID[`NNG_OPT_IPC_PEER_PID`] * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PEER_UID[`NNG_OPT_IPC_PEER_UID`] * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PEER_ZONEID[`NNG_OPT_IPC_PEER_ZONEID`] * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_PERMISSIONS[`NNG_OPT_IPC_PERMISSIONS`] * xref:nng_ipc_options.5.adoc#NNG_OPT_IPC_SECURITY_DESCRIPTOR[`NNG_OPT_IPC_SECURITY_DESCRIPTOR`] * xref:nng_options.5.adoc#NNG_OPT_LOCADDR[`NNG_OPT_LOCADDR`] * xref:nng_options.5.adoc#NNG_OPT_REMADDR[`NNG_OPT_REMADDR`] * xref:nng_options.5.adoc#NNG_OPT_URL[`NNG_OPT_URL`] == SEE ALSO [.text-left] xref:nng_sockaddr.5.adoc[nng_sockaddr(5)], xref:nng_ipc_options.5.adoc[nng_ipc_options(5)], xref:nng_options.5.adoc[nng_options(5)], xref:nng.7.adoc[nng(7)]