Luna/utils/logout.cpp
apio bbe1eca711
All checks were successful
Build and test / build (push) Successful in 1m45s
utils: Add a hackish "logout" command
2024-09-07 17:40:39 +02:00

29 lines
688 B
C++

#include <errno.h>
#include <os/ArgumentParser.h>
#include <signal.h>
#include <sys/pstat.h>
// Very hackish. Will do for now.
Result<int> luna_main(int argc, char** argv)
{
os::ArgumentParser parser;
parser.add_description("Log out of a GUI session.");
parser.add_system_program_info("logout"_sv);
parser.parse(argc, argv);
pid_t last = pstat(-1, nullptr);
for (pid_t pid = 1; pid <= last; pid++)
{
static process ps;
if (pstat(pid, &ps) < 0)
{
if (errno == ESRCH) continue;
return err(errno);
}
if (strstr(ps.ps_name, "/usr/bin/launch")) { kill(ps.ps_pid, SIGTERM); }
}
return 0;
}