---
name: "udev_monitor_unref"
section: "3"
platform: "linux"
package: "libudev-dev"
version: "257.13-1~deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/udev_monitor_new_from_netlink"
---

# udev\_monitor\_unref(3)

Create, acquire and release a udev monitor object

Part of [udev\_monitor\_new\_from\_netlink(3)](/udev_monitor_new_from_netlink/3.md).

## NAME

udev\_monitor\_new\_from\_netlink, udev\_monitor\_ref, udev\_monitor\_unref - Create, acquire and release a udev monitor object

## SYNOPSIS

```
#include <libudev.h>
```

**struct udev\_monitor \*udev\_monitor\_new\_from\_netlink(struct udev \****udev***, const char \****name***);**

**struct udev\_monitor \*udev\_monitor\_ref(struct udev\_monitor \****udev\_monitor***);**

**struct udev\_monitor \*udev\_monitor\_unref(struct udev\_monitor \****udev\_monitor***);**

## RETURN VALUE

On success, **udev\_monitor\_new\_from\_netlink()** returns a pointer to the allocated udev monitor. On failure, **NULL** is returned. **udev\_monitor\_ref()** returns the argument that it was passed, unmodified. **udev\_monitor\_unref()** always returns **NULL**.

## HISTORY

**udev\_monitor\_new\_from\_netlink()**, **udev\_monitor\_ref()**, and **udev\_monitor\_unref()** were added in version 221.

## SEE ALSO

[**udev\_new**(3)](/udev_new/3.md), [**udev\_device\_new\_from\_syspath**(3)](/udev_device_new_from_syspath/3.md), [**udev\_enumerate\_new**(3)](/udev_enumerate_new/3.md), [**udev\_monitor\_filter\_update**(3)](/udev_monitor_filter_update/3.md), [**udev\_monitor\_receive\_device**(3)](/udev_monitor_receive_device/3.md), [**udev\_list\_entry**(3)](/udev_list_entry/3.md), [**systemd**(1)](/systemd/1.md)
