sd_pid_get_session, sd_pid_get_unit, sd_pid_get_owner_uid — Determine session, service or owner of a session of a specific PID
#include <systemd/sd-login.h>
int sd_pid_get_session( | pid_t pid, |
char** session) ; |
int sd_pid_get_unit( | pid_t pid, |
char** unit) ; |
int sd_pid_get_owner_uid( | pid_t pid, |
uid_t* uid) ; |
sd_pid_get_session()
may be
used to determine the login session identifier of a
process identified by the specified process
identifier. The session identifier is a short string,
suitable for usage in file system paths. Note that not
all processes are part of a login session (e.g. system
service processes, user processes that are shared
between multiple sessions of the same user, or kernel
threads). For processes not being part of a login
session this function will fail. The returned string
needs to be freed with the libc
free(3)
call after use.
sd_pid_get_unit()
may be
used to determine the systemd unit (i.e. system
service) identifier of a process identified by the
specified process identifier. The unit name is a short
string, suitable for usage in file system paths. Note
that not all processes are part of a unit/service
(e.g. user processes, or kernel threads). For
processes not being part of a systemd unit/system
service this function will fail. The returned string
needs to be freed with the libc
free(3)
call after use.
sd_pid_get_owner_uid()
may
be used to determine the Unix user identifier of the
owner of the session of a process identified the
specified PID. Note that this function will succeed
for user processes which are shared between multiple
login sessions of the same user, where
sd_pid_get_session()
will
fail. For processes not being part of a login session
and not being a shared process of a user this function
will fail.
If the pid
paramater of any
of these functions is passed as 0 the operation is
executed for the calling process.
On success these calls return 0 or a positive integer. On failure, these calls return a negative errno-style error code.
The sd_pid_get_session()
,
sd_pid_get_pid()
, and
sd_pid_get_owner_uid()
interfaces
are available as shared library, which can be compiled
and linked to with the
libsystemd-login
pkg-config(1)
file.
Note that the login session identifier as
returned by sd_pid_get_session()
is completely unrelated to the process session
identifier as returned by
getsid(2).