From c83cc7f8628eeac44dcadb79ca3b80652770c11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 12 Jan 2021 09:20:02 +0100 Subject: [PATCH] reaper: add reaper_del() - pid is no longer watched/monitored after this --- reaper.c | 11 +++++++++++ reaper.h | 1 + 2 files changed, 12 insertions(+) diff --git a/reaper.c b/reaper.c index 8ebd31a4..15e08539 100644 --- a/reaper.c +++ b/reaper.c @@ -98,6 +98,17 @@ reaper_add(struct reaper *reaper, pid_t pid, reaper_cb cb, void *cb_data) ((struct child){.pid = pid, .cb = cb, .cb_data = cb_data})); } +void +reaper_del(struct reaper *reaper, pid_t pid) +{ + tll_foreach(reaper->children, it) { + if (it->item.pid == pid) { + tll_remove(reaper->children, it); + break; + } + } +} + static bool fdm_reap(struct fdm *fdm, int fd, int events, void *data) { diff --git a/reaper.h b/reaper.h index f955aa44..2cd6dd6e 100644 --- a/reaper.h +++ b/reaper.h @@ -13,3 +13,4 @@ void reaper_destroy(struct reaper *reaper); typedef bool (*reaper_cb)(struct reaper *reaper, pid_t pid, void *data); void reaper_add(struct reaper *reaper, pid_t pid, reaper_cb cb, void *cb_data); +void reaper_del(struct reaper *reaper, pid_t pid);