Luna/utils/logout.cpp

29 lines
687 B
C++
Raw Permalink Normal View History

2024-09-07 15:40:39 +00:00
#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);
}
2024-12-11 19:34:47 +00:00
if (strstr(ps.ps_name, "/usr/bin/execd")) { kill(ps.ps_pid, SIGTERM); }
2024-09-07 15:40:39 +00:00
}
return 0;
}