sd_pid_get_session
systemd
Developer
Lennart
Poettering
lennart@poettering.net
sd_pid_get_session
3
sd_pid_get_session
sd_pid_get_service
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_service
pid_t pid
char** service
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_service() may be
used to determine the system service identifier of a
process identified by the specified process
identifier. The service name is a short string,
suitable for usage in file system paths. Note that not
all processes are part of a service (e.g. user
processes, or kernel threads). For processes not being
part of a system service this function will fail. The
returned string needs to be freed with the libc
free3
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.
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_service(), 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-login7,
sd_session_is_active3,
getsid2