priod: initialize properly
This commit is contained in:
parent
1fa6f95135
commit
f26e6eeba5
27
priod.c
27
priod.c
|
@ -319,6 +319,27 @@ on_exec (struct app_context *ctx, int pid)
|
|||
str_free (&cmdline);
|
||||
}
|
||||
|
||||
static void
|
||||
preapply_rules (struct app_context *ctx)
|
||||
{
|
||||
DIR *dir = opendir ("/proc");
|
||||
if (!dir)
|
||||
{
|
||||
print_error ("opendir: %s: %s", "/proc", strerror (errno));
|
||||
return;
|
||||
}
|
||||
|
||||
// We don't care about processes deleted or created during this loop
|
||||
struct dirent *iter;
|
||||
while ((errno = 0, iter = readdir (dir)))
|
||||
{
|
||||
int pid = atoi (iter->d_name);
|
||||
if (pid && (iter->d_type == DT_UNKNOWN || iter->d_type == DT_DIR))
|
||||
on_exec (ctx, pid);
|
||||
}
|
||||
closedir (dir);
|
||||
}
|
||||
|
||||
static void
|
||||
on_netlink_message (struct app_context *ctx, struct nlmsghdr *mh)
|
||||
{
|
||||
|
@ -522,7 +543,11 @@ main (int argc, char *argv[])
|
|||
ctx.proc_event.user_data = &ctx;
|
||||
poller_fd_set (&ctx.proc_event, POLLIN);
|
||||
|
||||
// TODO: iterate through current /proc processes and apply politics
|
||||
// While new events are being queued, we can apply rules to already
|
||||
// existing processes, so that we don't miss anything except for obvious
|
||||
// cases when a process re-execs to something else after a match.
|
||||
// It would inherit the same values anyway, so it seems to be mostly okay.
|
||||
preapply_rules (&ctx);
|
||||
|
||||
ctx.polling = true;
|
||||
while (ctx.polling)
|
||||
|
|
Loading…
Reference in New Issue