Index · Directives · Python · libudev · gudev systemd 220

## Name

sd_bus_new, sd_bus_ref, sd_bus_unref — Create a new bus object and create or destroy references to it

## Synopsis

    #include <systemd/sd-bus.h>

`int sd_bus_new(` | sd_bus **bus`)`;

`sd_bus *sd_bus_ref(` | sd_bus *bus`)`;

`sd_bus *sd_bus_unref(` | sd_bus *bus`)`;

## Description

`sd_bus_new()` creates a new bus object. This object is reference-counted, and will be destroyed when all references are gone. Initially, the caller of this function owns the sole reference.

`sd_bus_ref()` creates a new reference to `bus`. This bus object will not be destroyed until `sd_bus_unref()` has been called as many times plus once more. Once the reference count has dropped to zero, `bus` cannot be used anymore, so further calls to `sd_bus_ref()` or `sd_bus_unref()` are illegal.

`sd_bus_unref()` destroys a reference to `bus`.

## Return Value

On success, `sd_bus_new()` returns 0 or a positive integer. On failure, it returns a negative errno-style error code.

`sd_bus_ref` always returns the argument.

`sd_bus_unref` always returns `NULL`.

## Errors

Returned errors may indicate the following problems:

`-ENOMEM`

  Memory allocation failed.

## Notes

`sd_bus_new()` and other functions described here are available as a shared library, which can be compiled and linked to with the `libsystemd` pkg-config(1) file.

## See Also

systemd(1), sd-bus(3), sd_bus_open_user(3), sd_bus_open_system(3), sd_bus_default_user(3), sd_bus_default_system(3)