SD-DAEMON(3) sd-daemon SD-DAEMON(3)

.SH "NAME" sd-daemon, SD\_EMERG, SD\_ALERT, SD\_CRIT, SD\_ERR, SD\_WARNING, SD\_NOTICE, SD\_INFO, SD\_DEBUG - APIs for new-style daemons

.SH "SYNOPSIS"

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

.HP 912u

**pkg-config --cflags --libs libsystemd**

.SH "DESCRIPTION"

.PP sd-daemon.h is part of [**libsystemd**(3)](/man/os/systemd/libsystemd.3) and provides APIs for new-style daemons, as implemented by the [**systemd**(1)](/man/os/systemd/systemd.1) service manager.

.PP See [**sd\_listen\_fds**(3)](/man/os/systemd/sd_listen_fds.3), [**sd\_notify**(3)](/man/os/systemd/sd_notify.3), [**sd\_booted**(3)](/man/os/systemd/sd_booted.3), [**sd\_is\_fifo**(3)](/man/os/systemd/sd_is_fifo.3), [**sd\_watchdog\_enabled**(3)](/man/os/systemd/sd_watchdog_enabled.3), and [**sd\_pidfd\_get\_inode\_id**(3)](/man/os/systemd/sd_pidfd_get_inode_id.3) for more information about the functions implemented. In addition to these functions, a couple of logging prefixes are defined as macros:

```
#define SD_EMERG   "<0>"  /* system is unusable */
#define SD_ALERT   "<1>"  /* action must be taken immediately */
#define SD_CRIT    "<2>"  /* critical conditions */
#define SD_ERR     "<3>"  /* error conditions */
#define SD_WARNING "<4>"  /* warning conditions */
#define SD_NOTICE  "<5>"  /* normal but significant condition */
#define SD_INFO    "<6>"  /* informational */
#define SD_DEBUG   "<7>"  /* debug-level messages */
```

.PP These prefixes are intended to be used in conjunction with stderr-based logging (or stdout-based logging) as implemented by systemd. If a systemd service definition file is configured with *StandardError=journal* or *StandardError=kmsg* (and similar with *StandardOutput=*), these prefixes can be used to encode a log level in lines printed. This is similar to the kernel **printk()**-style logging. See [**klogctl**(2)](/man/os/systemd/klogctl.2) for more information.

.PP The log levels are identical to [**syslog**(3)](/man/os/systemd/syslog.3)'s log level system. To use these prefixes simply prefix every line with one of these strings. A line that is not prefixed will be logged at the default log level SD\_INFO.

.PP **Example 1. Hello World**

.PP A daemon may log with the log level NOTICE by issuing this call:

```
fprintf(stderr, SD_NOTICE "Hello World!\n");
```

.SH "NOTES"

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

.PP The code described here uses [**getenv**(3)](/man/os/systemd/getenv.3), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call [**setenv**(3)](/man/os/systemd/setenv.3) 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.

.SH "SEE ALSO"

.PP [**systemd**(1)](/man/os/systemd/systemd.1), [**sd\_listen\_fds**(3)](/man/os/systemd/sd_listen_fds.3), [**sd\_notify**(3)](/man/os/systemd/sd_notify.3), [**sd\_booted**(3)](/man/os/systemd/sd_booted.3), [**sd\_is\_fifo**(3)](/man/os/systemd/sd_is_fifo.3), [**sd\_watchdog\_enabled**(3)](/man/os/systemd/sd_watchdog_enabled.3), [**sd\_pidfd\_get\_inode\_id**(3)](/man/os/systemd/sd_pidfd_get_inode_id.3), [**daemon**(7)](/man/os/systemd/daemon.7), [**systemd.service**(5)](/man/os/systemd/systemd.service.5), [**systemd.socket**(5)](/man/os/systemd/systemd.socket.5), [**fprintf**(3)](/man/os/systemd/fprintf.3), [**pkg-config**(1)](/man/os/systemd/pkg-config.1)

systemd 262.2

---

Document: sd-daemon(3) from systemd 262.2-r1 (Chainguard OS)
Source: https://github.com/systemd/systemd
