utils: Add a hackish "logout" command
All checks were successful
Build and test / build (push) Successful in 1m45s

This commit is contained in:
apio 2024-09-07 17:40:39 +02:00
parent e7d361ca51
commit bbe1eca711
Signed by: apio
GPG Key ID: B8A7D06E42258954
2 changed files with 29 additions and 0 deletions

View File

@ -34,3 +34,4 @@ luna_utility(touch.cpp touch)
luna_utility(free.cpp free)
luna_utility(sha256sum.cpp sha256sum)
luna_utility(arch.cpp arch)
luna_utility(logout.cpp logout)

28
utils/logout.cpp Normal file
View File

@ -0,0 +1,28 @@
#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;
}