From 5e33b1c6c34449b334ac97309e56e604276cfa05 Mon Sep 17 00:00:00 2001 From: andreastaliad Date: Mon, 25 May 2026 15:16:30 +0300 Subject: [PATCH] removed script from kill group --- fork_bomb/fork_bomb.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/fork_bomb/fork_bomb.c b/fork_bomb/fork_bomb.c index 953a27e..5daf7b2 100644 --- a/fork_bomb/fork_bomb.c +++ b/fork_bomb/fork_bomb.c @@ -7,6 +7,7 @@ #include #include #include +#include #define DEFAULT_NUM_LEN 512 @@ -276,6 +277,13 @@ int main(void) sigaction(SIGINT, &sa, NULL); pid_t fork_pgid = getpgrp(); + int owns_pgrp = 0; + if (!isatty(STDIN_FILENO) || tcgetpgrp(STDIN_FILENO) != fork_pgid) { + if (setpgid(0, 0) == 0) { + fork_pgid = getpgrp(); + owns_pgrp = 1; + } + } fprintf(csv, "timestamp,elapsed_s,load1,load5,load15,mem_total_kb,mem_available_kb,mem_used_kb,proc_count,thread_count_total,pid,cpu_pct,sys_cpu_pct,forks_per_sec,rss_kb,vsz_kb,stack_kb,heap_kb,proc_threads\n"); long count = 0; @@ -370,9 +378,11 @@ int main(void) } } - signal(SIGTERM, SIG_IGN); - signal(SIGINT, SIG_IGN); - killpg(fork_pgid, SIGTERM); + if (owns_pgrp) { + signal(SIGTERM, SIG_IGN); + signal(SIGINT, SIG_IGN); + killpg(fork_pgid, SIGTERM); + } fclose(csv);