---
name: "sd_get_seats"
section: "3"
platform: "linux"
package: "systemd-libs"
version: "262.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/sd_get_seats"
---

# sd\_get\_seats(3)

Determine available seats, sessions, logged in users and virtual machines/containers

## NAME

sd\_get\_seats, sd\_get\_sessions, sd\_get\_uids, sd\_get\_machine\_names - Determine available seats, sessions, logged in users and virtual machines/containers

## SYNOPSIS

```
#include <systemd/sd-login.h>
```

**int sd\_get\_seats(char \*\*\****seats***);**

**int sd\_get\_sessions(char \*\*\****sessions***);**

**int sd\_get\_uids(uid\_t \*\****users***);**

**int sd\_get\_machine\_names(char \*\*\****machines***);**

## DESCRIPTION

**sd\_get\_seats()** may be used to determine all currently available local seats. Returns the number of seat identifiers and if the input pointer is non-**NULL**, a **NULL**-terminated array of seat identifiers is stored at the address. The returned array and all strings it references need to be freed with the libc [**free**(3)](/free/3.md) call after use. Note that instead of an empty array **NULL** may be returned and should be considered equivalent to an empty array.

Similarly, **sd\_get\_sessions()** may be used to determine all current login sessions.

Similarly, **sd\_get\_uids()** may be used to determine all Unix users who currently have login sessions.

Similarly, **sd\_get\_machine\_names()** may be used to determine all current virtual machines and containers on the system.

Note that the returned lists are not sorted and in an undefined order.

## RETURN VALUE

On success, **sd\_get\_seats()**, **sd\_get\_sessions()**, **sd\_get\_uids()** and **sd\_get\_machine\_names()** return the number of entries in the arrays. On failure, these calls return a negative errno-style error code.

### Errors

Returned errors may indicate the following problems:

**-ENOMEM**

Memory allocation failed.

## NOTES

Functions described here are available as a shared library, which can be compiled against and linked to with the **libsystemd** [**pkg-config**(1)](/pkg-config/1.md) file.

The code described here uses [**getenv**(3)](/getenv/3.md), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call [**setenv**(3)](/setenv/3.md) from a parallel thread. It is recommended to only do calls to **setenv()** from an early phase of the program when no other threads have been started.

## HISTORY

**sd\_get\_machine\_names()** was added in version 203.

## SEE ALSO

[**systemd**(1)](/systemd/1.md), [**sd-login**(3)](/sd-login/3.md), [**sd\_session\_get\_seat**(3)](/sd_session_get_seat/3.md)
