# sd_watchdog_enabled

systemd

sd_watchdog_enabled

3

sd_watchdog_enabled

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

\#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)` 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)` for details.

Use `sd_event_set_watchdog(3)` to enable automatic watchdog support in `sd-event(3)`-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

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.

`$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.

# History

`sd_watchdog_enabled()` was added in version 209.

# See Also

`systemd(1)`, `sd-daemon(3)`, `daemon(7)`, `systemd.service(5)`, `sd_notify(3)`, `sd_event_set_watchdog(3)`