sd_pid_get_session
systemd
Developer
Lennart
Poettering
lennart@poettering.net
sd_pid_get_session
3
sd_pid_get_session
sd_pid_get_unit
sd_pid_get_user_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_user_unit
pid_t pid
char** unit
int sd_pid_get_owner_uid
pid_t pid
uid_t* uid
Description
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
free3
call after use.
sd_pid_get_unit() may be
used to determine the systemd system unit (i.e. system
service) identifier of a process identified by the
specified PID. The unit name is a short string,
suitable for usage in file system paths. Note that not
all processes are part of a system unit/service
(e.g. user processes, or kernel threads). For
processes not being part of a systemd system unit this
function will fail. (More specifically: this call will
not work for processes that are part of user units,
use sd_pid_get_user_unit() for
that.) The returned string needs to be freed with the
libc
free3
call after use.
sd_pid_get_user_unit() may
be used to determine the systemd user unit (i.e. user
service) identifier of a process identified by the
specified PID. This is similar to
sd_pid_get_unit() but applies to
user units instead of system units.
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 parameter of any
of these functions is passed as 0 the operation is
executed for the calling process.
Return Value
On success these calls return 0 or a positive
integer. On failure, these calls return a negative
errno-style error code.
Notes
The sd_pid_get_session(),
sd_pid_get_unit(),
sd_pid_get_user_unit(), and
sd_pid_get_owner_uid() interfaces
are available as shared library, which can be compiled
and linked to with the
libsystemd-login
pkg-config1
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
getsid2.
See Also
systemd1,
sd-login3,
sd_session_is_active3,
getsid2