---
name: "sd_watchdog_enabled"
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_watchdog_enabled"
---

# sd\_watchdog\_enabled(3)

Check whether the service manager expects watchdog keep-alive notifications from a service

## NAME

sd\_watchdog\_enabled - Check whether the service manager expects watchdog keep-alive notifications from a service

## SYNOPSIS

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

**int sd\_watchdog\_enabled(int** *unset\_environment***, uint64\_t \****usec***);**

## DESCRIPTION

**sd\_watchdog\_enabled()** may be called by a service to detect whether the service manager expects regular keep-alive watchdog notification events from it, and the timeout after which the manager will act on the service if it did not get such a notification.

If the *$WATCHDOG\_USEC* environment variable is set, and the *$WATCHDOG\_PID* variable is unset or set to the PID of the current process, the service manager expects notifications from this process. The manager will usually terminate a service when it does not get a notification message within the specified time after startup and after each previous message. It is recommended that a daemon sends a keep-alive notification message to the service manager every half of the time returned here. Notification messages may be sent with [**sd\_notify**(3)](/sd_notify/3.md) with a message string of "WATCHDOG=1".

If the *unset\_environment* parameter is non-zero, **sd\_watchdog\_enabled()** will unset the *$WATCHDOG\_USEC* and *$WATCHDOG\_PID* environment variables before returning (regardless of whether the function call itself succeeded or not). Those variables are no longer inherited by child processes. Further calls to **sd\_watchdog\_enabled()** will also return with zero.

If the *usec* parameter is non-**NULL**, **sd\_watchdog\_enabled()** will write the timeout in μs for the watchdog logic to it.

To enable service supervision with the watchdog logic, use *WatchdogSec=* in service files. See [**systemd.service**(5)](/systemd.service/5.md) for details.

Use [**sd\_event\_set\_watchdog**(3)](/sd_event_set_watchdog/3.md) to enable automatic watchdog support in [**sd-event**(3)](/sd-event/3.md)-based event loops.

## RETURN VALUE

On failure, this call returns a negative errno-style error code. If the service manager expects watchdog keep-alive notification messages to be sent, \> 0 is returned, otherwise 0 is returned. Only if the return value is \> 0, the *usec* parameter is valid after the call.

## 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.

Internally, this function parses the *$WATCHDOG\_PID* and *$WATCHDOG\_USEC* environment variable. The call will ignore these variables if *$WATCHDOG\_PID* does not contain the PID of the current process, under the assumption that in that case, the variables were set for a different process further up the process tree.

## ENVIRONMENT

*$WATCHDOG\_PID*

Set by the system manager for supervised process for which watchdog support is enabled, and contains the PID of that process. See above for details.

Added in version 209.

*$WATCHDOG\_USEC*

Set by the system manager for supervised process for which watchdog support is enabled, and contains the watchdog timeout in μs. See above for details.

Added in version 209.

## HISTORY

**sd\_watchdog\_enabled()** was added in version 209.

## SEE ALSO

[**systemd**(1)](/systemd/1.md), [**sd-daemon**(3)](/sd-daemon/3.md), [**daemon**(7)](/daemon/7.md), [**systemd.service**(5)](/systemd.service/5.md), [**sd\_notify**(3)](/sd_notify/3.md), [**sd\_event\_set\_watchdog**(3)](/sd_event_set_watchdog/3.md)
