# sd_bus_message_new_signal

## NAME



           sd_bus_message_new_signal, sd_bus_message_new_signal_to - Create a
           signal message
    


## SYNOPSIS



           **#include <systemd/sd-bus.h>**
    
           **int sd_bus_message_new_signal(sd_bus ***_bus_**, sd_bus_message ****_m_**,**
                                         **const char ***_path_**,**
                                         **const char ***_interface_**,**
                                         **const char ***_member_**);**
    
           **int sd_bus_message_new_signal_to(sd_bus ***_bus_**, sd_bus_message ****_m_**,**
                                            **const char ***_destination_**,**
                                            **const char ***_path_**,**
                                            **const char ***_interface_**,**
                                            **const char ***_member_**);**
    


## DESCRIPTION



           The **sd_bus_message_new_signal()** function creates a new bus message
           object that encapsulates a D-Bus signal, and returns it in the _m_
           output parameter. The signal will be sent to path _path_ , on the
           interface _interface_ , member _member_. When this message is sent, no
           reply is expected. See sd_bus_message_new_method_call(3) for a
           short description of the meaning of the _path_ , _interface_ , and
           _member_ parameters.
    
           **sd_bus_message_new_signal_to()** is a shorthand for creating a new
           bus message to a specific destination. It's behavior is similar to
           calling **sd_bus_message_new_signal()** followed by calling
           sd_bus_message_set_destination(3).
    


## RETURN VALUE



           This function returns 0 if the message object was successfully
           created, and a negative errno-style error code otherwise.
    
       **Errors**
           Returned errors may indicate the following problems:
    
           **-EINVAL**
               The output parameter _m_ is **NULL**.
    
               The _path_ parameter is not a valid D-Bus path
               ("/an/object/path"), the _interface_ parameter is not a valid
               D-Bus interface name ("an.interface.name"), or the _member_
               parameter is not a valid D-Bus member ("Name").
    
           **-ENOTCONN**
               The bus parameter _bus_ is **NULL** or the bus is not connected.
    
           **-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) file.
    
           The code described here uses 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) 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.
    


## EXAMPLES



           **Example 1. Send a simple signal**
    
               /* SPDX-License-Identifier: MIT-0 */
    
               #include <systemd/sd-bus.h>
               #define _cleanup_(f) __attribute__((cleanup(f)))
    
               int send_unit_files_changed(sd_bus *bus) {
                 _cleanup_(sd_bus_message_unrefp) sd_bus_message *message = NULL;
                 int r;
    
                 r = sd_bus_message_new_signal(bus, &message,
                                               "/org/freedesktop/systemd1",
                                               "org.freedesktop.systemd1.Manager",
                                               "UnitFilesChanged");
                 if (r < 0)
                   return r;
    
                 return sd_bus_send(bus, message, NULL);
               }
    
           This function in systemd sources is used to emit the
           "UnitFilesChanged" signal when the unit files have been changed.
    


* * *