]> git.proxmox.com Git - systemd.git/blobdiff - man/sd_session_get_service.html
Imported Upstream version 219
[systemd.git] / man / sd_session_get_service.html
index 305d4f451a16659b90694b854ed121a9645e06ea..68657ab4e67b5958f79c99cbb3143cd054bb7861 100644 (file)
   <a href="systemd.directives.html">Directives </a>·
   <a href="../python-systemd/index.html">Python </a>·
   <a href="../libudev/index.html">libudev </a>·
-  <a href="../libudev/index.html">gudev </a><span style="float:right">systemd 218</span><hr><div class="refentry"><a name="sd_session_is_active"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>sd_session_is_active, sd_session_is_remote, sd_session_get_state, sd_session_get_uid, sd_session_get_seat, sd_session_get_service, sd_session_get_type, sd_session_get_class, sd_session_get_desktop, sd_session_get_display, sd_session_get_tty, sd_session_get_vt, sd_session_get_remote_host, sd_session_get_remote_user — Determine state of a specific session</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;systemd/sd-login.h&gt;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_is_active</b>(</code></td><td>const char *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_is_remote</b>(</code></td><td>const char *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_state</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">state</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_uid</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>uid_t *<var class="pdparam">uid</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_seat</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">seat</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_service</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">service</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_type</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_class</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">class</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_desktop</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">desktop</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_display</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">display</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_remote_host</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">remote_host</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_remote_user</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">remote_user</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_tty</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">tty</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_vt</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int *<var class="pdparam">vt</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140536242843936"></a><h2 id="Description">Description<a class="headerlink" title="Permalink to this headline" href="#Description">¶</a></h2><p><code class="function">sd_session_is_active()</code> may
-                be used to determine whether the session identified by
-                the specified session identifier is currently active
-                (i.e. currently in the foreground and available for
-                user input) or not.</p><p><code class="function">sd_session_is_remote()</code> may
-                be used to determine whether the session identified by
-                the specified session identifier is a remote session
-                (i.e. its remote host is known) or not.</p><p><code class="function">sd_session_get_state()</code> may
-                be used to determine the state of the session
-                identified by the specified session identifier. The
-                following states are currently known:
-                "<code class="literal">online</code>" (session logged in, but
-                session not active, i.e. not in the foreground),
-                "<code class="literal">active</code>" (session logged in and
-                active, i.e. in the foreground),
-                "<code class="literal">closing</code>" (session nominally logged
-                out, but some processes belonging to it are still
-                around). In the future additional states might be
-                defined, client code should be written to be robust in
-                regards to additional state strings being
-                returned. This function is a more generic version of
-                <code class="function">sd_session_is_active()</code>. The returned
-                string needs to be freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_uid()</code> may be
-                used to determine the user identifier of the Unix user the session
-                identified by the specified session identifier belongs
-                to.</p><p><code class="function">sd_session_get_seat()</code> may
-                be used to determine the seat identifier of the seat
-                the session identified by the specified session
-                identifier belongs to. Note that not all sessions are
-                attached to a seat, this call will fail for them. The
-                returned string needs to be freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_service()</code>
-                may be used to determine the name of the service (as
-                passed during PAM session setup) that registered the
-                session identified by the specified session
-                identifier. The returned string needs to be freed with
-                the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_type()</code> may
-                be used to determine the type of the session
-                identified by the specified session identifier. The
-                returned string is one of "<code class="literal">x11</code>",
-                "<code class="literal">wayland</code>", "<code class="literal">tty</code>",
-                "<code class="literal">mir</code>" or "<code class="literal">unspecified</code>" and
-                needs to be freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_class()</code> may
-                be used to determine the class of the session
-                identified by the specified session identifier. The
-                returned string is one of "<code class="literal">user</code>",
-                "<code class="literal">greeter</code>",
-                "<code class="literal">lock-screen</code>", or
-                "<code class="literal">background</code>" and needs to be freed
-                with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_desktop()</code> may
-                be used to determine the brand of the desktop running on
-                the session identified by the specified session identifier.
-                This field can be set freely by desktop environments and
-                does not follow any special formatting. However, desktops
-                are strongly recommended to use the same identifiers and
-                capitalization as for
-                <code class="varname">$XDG_CURRENT_DESKTOP</code>, as defined by
-                the <a class="ulink" href="http://standards.freedesktop.org/desktop-entry-spec/latest/" target="_top">Desktop
-                Entry
-                Specification</a>. The returned string needs to be
-                freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_display()</code>
-                may be used to determine the X11 display of the
-                session identified by the specified session
-                identifier. The returned string needs to be
-                freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_remote_host()</code>
-                may be used to determine the remote hostname of the
-                session identified by the specified session
-                identifier. The returned string needs to be
-                freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_remote_user()</code>
-                may be used to determine the remote username of the
-                session identified by the specified session
-                identifier. The returned string needs to be
-                freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use. Note that this value is rarely known
-                to the system, and even then should not be relied on.</p><p><code class="function">sd_session_get_tty()</code>
-                may be used to determine the TTY device of the
-                session identified by the specified session
-                identifier. The returned string needs to be
-                freed with the libc
-                <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
-                call after use.</p><p><code class="function">sd_session_get_vt()</code>
-                may be used to determine the VT number of the
-                session identified by the specified session
-                identifier. This function will return an error if
-                the seat does not support VTs.</p><p>If the <code class="varname">session</code> parameter of
-                any of these functions is passed as
-                <code class="constant">NULL</code>, the operation is executed
-                for the session the calling process is a member of, if
-                there is any.</p></div><div class="refsect1"><a name="idm140536237842848"></a><h2 id="Return Value">Return Value<a class="headerlink" title="Permalink to this headline" href="#Return%20Value">¶</a></h2><p>If the test succeeds,
-                <code class="function">sd_session_is_active()</code> and
-                <code class="function">sd_session_is_remote()</code> return a
-                positive integer; if it fails, 0.  On success,
-                <code class="function">sd_session_get_state()</code>,
-                <code class="function">sd_session_get_uid()</code>,
-                <code class="function">sd_session_get_seat()</code>,
-                <code class="function">sd_session_get_service()</code>,
-                <code class="function">sd_session_get_type()</code>,
-                <code class="function">sd_session_get_class()</code>,
-                <code class="function">sd_session_get_display()</code>,
-                <code class="function">sd_session_get_remote_user()</code>,
-                <code class="function">sd_session_get_remote_host()</code> and
-                <code class="function">sd_session_get_tty()</code> return 0 or
-                a positive integer. On failure, these calls return a
-                negative errno-style error code.</p></div><div class="refsect1"><a name="idm140536237833952"></a><h2 id="Notes">Notes<a class="headerlink" title="Permalink to this headline" href="#Notes">¶</a></h2><p>The <code class="function">sd_session_is_active()</code>,
-                <code class="function">sd_session_get_state()</code>,
-                <code class="function">sd_session_get_uid()</code>,
-                <code class="function">sd_session_get_seat()</code>,
-                <code class="function">sd_session_get_service()</code>,
-                <code class="function">sd_session_get_type()</code>,
-                <code class="function">sd_session_get_class()</code>,
-                <code class="function">sd_session_get_display()</code>,
-                <code class="function">sd_session_get_remote_host()</code>,
-                <code class="function">sd_session_get_remote_user()</code> and
-                <code class="function">sd_session_get_tty()</code>
-                interfaces are available as a shared library, which can
-                be compiled and linked to with the
-                <code class="constant">libsystemd</code> <a href="http://linux.die.net/man/1/pkg-config"><span class="citerefentry"><span class="refentrytitle">pkg-config</span>(1)</span></a>
-                file.</p></div><div class="refsect1"><a name="idm140536237824384"></a><h2 id="See Also">See Also<a class="headerlink" title="Permalink to this headline" href="#See%20Also">¶</a></h2><p>
-                        <a href="systemd.html"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
-                        <a href="sd-login.html"><span class="citerefentry"><span class="refentrytitle">sd-login</span>(3)</span></a>,
-                        <a href="sd_pid_get_session.html"><span class="citerefentry"><span class="refentrytitle">sd_pid_get_session</span>(3)</span></a>
-                </p></div></div></body></html>
+  <a href="../libudev/index.html">gudev </a><span style="float:right">systemd 219</span><hr><div class="refentry"><a name="sd_session_is_active"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>sd_session_is_active, sd_session_is_remote, sd_session_get_state, sd_session_get_uid, sd_session_get_seat, sd_session_get_service, sd_session_get_type, sd_session_get_class, sd_session_get_desktop, sd_session_get_display, sd_session_get_tty, sd_session_get_vt, sd_session_get_remote_host, sd_session_get_remote_user — Determine state of a specific session</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;systemd/sd-login.h&gt;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_is_active</b>(</code></td><td>const char *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_is_remote</b>(</code></td><td>const char *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_state</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">state</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_uid</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>uid_t *<var class="pdparam">uid</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_seat</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">seat</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_service</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">service</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_type</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_class</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">class</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_desktop</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">desktop</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_display</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">display</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_remote_host</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">remote_host</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_remote_user</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">remote_user</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_tty</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>char **<var class="pdparam">tty</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">sd_session_get_vt</b>(</code></td><td>const char *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int *<var class="pdparam">vt</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140336054828912"></a><h2 id="Description">Description<a class="headerlink" title="Permalink to this headline" href="#Description">¶</a></h2><p><code class="function">sd_session_is_active()</code> may be used to
+    determine whether the session identified by the specified session
+    identifier is currently active (i.e. currently in the foreground
+    and available for user input) or not.</p><p><code class="function">sd_session_is_remote()</code> may be used to
+    determine whether the session identified by the specified session
+    identifier is a remote session (i.e. its remote host is known) or
+    not.</p><p><code class="function">sd_session_get_state()</code> may be used to
+    determine the state of the session identified by the specified
+    session identifier. The following states are currently known:
+    "<code class="literal">online</code>" (session logged in, but session not
+    active, i.e. not in the foreground), "<code class="literal">active</code>"
+    (session logged in and active, i.e. in the foreground),
+    "<code class="literal">closing</code>" (session nominally logged out, but some
+    processes belonging to it are still around). In the future
+    additional states might be defined, client code should be written
+    to be robust in regards to additional state strings being
+    returned. This function is a more generic version of
+    <code class="function">sd_session_is_active()</code>. The returned string
+    needs to be freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_uid()</code> may be used to
+    determine the user identifier of the Unix user the session
+    identified by the specified session identifier belongs to.</p><p><code class="function">sd_session_get_seat()</code> may be used to
+    determine the seat identifier of the seat the session identified
+    by the specified session identifier belongs to. Note that not all
+    sessions are attached to a seat, this call will fail for them. The
+    returned string needs to be freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_service()</code> may be used to
+    determine the name of the service (as passed during PAM session
+    setup) that registered the session identified by the specified
+    session identifier. The returned string needs to be freed with the
+    libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_type()</code> may be used to
+    determine the type of the session identified by the specified
+    session identifier. The returned string is one of
+    "<code class="literal">x11</code>", "<code class="literal">wayland</code>",
+    "<code class="literal">tty</code>", "<code class="literal">mir</code>" or
+    "<code class="literal">unspecified</code>" and needs to be freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_class()</code> may be used to
+    determine the class of the session identified by the specified
+    session identifier. The returned string is one of
+    "<code class="literal">user</code>", "<code class="literal">greeter</code>",
+    "<code class="literal">lock-screen</code>", or "<code class="literal">background</code>"
+    and needs to be freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_desktop()</code> may be used to
+    determine the brand of the desktop running on the session
+    identified by the specified session identifier. This field can be
+    set freely by desktop environments and does not follow any special
+    formatting. However, desktops are strongly recommended to use the
+    same identifiers and capitalization as for
+    <code class="varname">$XDG_CURRENT_DESKTOP</code>, as defined by the <a class="ulink" href="http://standards.freedesktop.org/desktop-entry-spec/latest/" target="_top">Desktop
+    Entry Specification</a>. The returned string needs to be freed
+    with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_display()</code> may be used to
+    determine the X11 display of the session identified by the
+    specified session identifier. The returned string needs to be
+    freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_remote_host()</code> may be
+    used to determine the remote hostname of the session identified by
+    the specified session identifier. The returned string needs to be
+    freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_remote_user()</code> may be
+    used to determine the remote username of the session identified by
+    the specified session identifier. The returned string needs to be
+    freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use. Note that this value is rarely known to the
+    system, and even then should not be relied on.</p><p><code class="function">sd_session_get_tty()</code> may be used to
+    determine the TTY device of the session identified by the
+    specified session identifier. The returned string needs to be
+    freed with the libc
+    <a href="http://man7.org/linux/man-pages/man3/free.3.html"><span class="citerefentry"><span class="refentrytitle">free</span>(3)</span></a>
+    call after use.</p><p><code class="function">sd_session_get_vt()</code> may be used to
+    determine the VT number of the session identified by the specified
+    session identifier. This function will return an error if the seat
+    does not support VTs.</p><p>If the <code class="varname">session</code> parameter of any of these
+    functions is passed as <code class="constant">NULL</code>, the operation is
+    executed for the session the calling process is a member of, if
+    there is any.</p></div><div class="refsect1"><a name="idm140336049877040"></a><h2 id="Return Value">Return Value<a class="headerlink" title="Permalink to this headline" href="#Return%20Value">¶</a></h2><p>If the test succeeds,
+    <code class="function">sd_session_is_active()</code> and
+    <code class="function">sd_session_is_remote()</code> return a
+    positive integer; if it fails, 0.  On success,
+    <code class="function">sd_session_get_state()</code>,
+    <code class="function">sd_session_get_uid()</code>,
+    <code class="function">sd_session_get_seat()</code>,
+    <code class="function">sd_session_get_service()</code>,
+    <code class="function">sd_session_get_type()</code>,
+    <code class="function">sd_session_get_class()</code>,
+    <code class="function">sd_session_get_display()</code>,
+    <code class="function">sd_session_get_remote_user()</code>,
+    <code class="function">sd_session_get_remote_host()</code> and
+    <code class="function">sd_session_get_tty()</code> return 0 or
+    a positive integer. On failure, these calls return a
+    negative errno-style error code.</p></div><div class="refsect1"><a name="idm140336049868272"></a><h2 id="Notes">Notes<a class="headerlink" title="Permalink to this headline" href="#Notes">¶</a></h2><p>The <code class="function">sd_session_is_active()</code>,
+    <code class="function">sd_session_get_state()</code>,
+    <code class="function">sd_session_get_uid()</code>,
+    <code class="function">sd_session_get_seat()</code>,
+    <code class="function">sd_session_get_service()</code>,
+    <code class="function">sd_session_get_type()</code>,
+    <code class="function">sd_session_get_class()</code>,
+    <code class="function">sd_session_get_display()</code>,
+    <code class="function">sd_session_get_remote_host()</code>,
+    <code class="function">sd_session_get_remote_user()</code> and
+    <code class="function">sd_session_get_tty()</code>
+    interfaces are available as a shared library, which can
+    be compiled and linked to with the
+    <code class="constant">libsystemd</code> <a href="http://linux.die.net/man/1/pkg-config"><span class="citerefentry"><span class="refentrytitle">pkg-config</span>(1)</span></a>
+    file.</p></div><div class="refsect1"><a name="idm140336049858736"></a><h2 id="See Also">See Also<a class="headerlink" title="Permalink to this headline" href="#See%20Also">¶</a></h2><p>
+      <a href="systemd.html"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
+      <a href="sd-login.html"><span class="citerefentry"><span class="refentrytitle">sd-login</span>(3)</span></a>,
+      <a href="sd_pid_get_session.html"><span class="citerefentry"><span class="refentrytitle">sd_pid_get_session</span>(3)</span></a>
+    </p></div></div></body></html>