---
name: "nng_pipe"
section: "5"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_pipe"
---

# nng\_pipe(5)

communications pipe

## NAME

nng\_pipe - communications pipe

## SYNOPSIS

```
#include <nng/nng.h>
typedef struct nng_pipe_s nng_pipe;
```

## DESCRIPTION

An `nng_pipe` is a handle to a pipe object, which can be thought of as a single connection. (In most cases this is actually the case — the pipe is an abstraction for a single TCP or IPC connection.) Pipes are associated with either the listener or dialer that created them, and therefore are also automatically associated with a single socket.

**Important**\

The `nng_pipe` structure is always passed by value (both for input parameters and return values), and should be treated opaquely. Passing structures this way gives the compiler a chance to perform accurate type checks in functions passing values of this type.

**Tip**\

Most applications should never concern themselves with individual pipes. However it is possible to access a pipe when more information about the source of a message is needed, or when more control is required over message delivery.

Pipe objects are created by dialers (`nng_dialer` objects) and listeners (`nng_listener` objects).

Pipe objects may be destroyed by the `nng_pipe_close()` function. They are also closed when the dialer or listener that created them is closed, or when the remote peer closes the underlying connection.

### Initialization

A pipe may be initialized using the macro `NNG_PIPE_INITIALIZER` before it is opened, to prevent confusion with valid open pipes.

For example:

```
nng_pipe p = NNG_PIPE_INITIALIZER;
```

## SEE ALSO

[nng\_msg\_get\_pipe(3)](/nng_msg_get_pipe/3.md), [nng\_pipe\_close(3)](/nng_pipe_close/3.md), [nng\_pipe\_getopt(3)](/nng_pipe_getopt/3.md), [nng\_pipe\_dialer(3)](/nng_pipe_dialer/3.md), [nng\_pipe\_id(3)](/nng_pipe_id/3.md), [nng\_pipe\_listener(3)](/nng_pipe_listener/3.md), [nng\_pipe\_socket(3)](/nng_pipe_socket/3.md), [nng\_dialer(5)](/nng_dialer/5.md), [nng\_listener(5)](/nng_listener/5.md), [nng\_options(5)](/nng_options/5.md), [nng(7)](/nng/7.md)
