about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--service.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/service.c b/service.c
index 63a647c..ec7ac68 100644
--- a/service.c
+++ b/service.c
@@ -174,6 +174,7 @@ void serviceStart(struct Service *service) {
 		return;
 	}
 
+	setpgid(0, 0);
 	dup2(service->outPipe[1], STDOUT_FILENO);
 	dup2(service->errPipe[1], STDERR_FILENO);
 
@@ -207,10 +208,10 @@ void serviceStart(struct Service *service) {
 
 void serviceSignal(struct Service *service, int signal) {
 	if (service->state != Start) return;
-	int error = kill(service->pid, signal);
+	int error = killpg(service->pid, signal);
 	if (error) {
 		syslog(
-			LOG_WARNING, "kill(%s[%d], %s): %m",
+			LOG_WARNING, "killpg(%s[%d], %s): %m",
 			service->name, service->pid, sys_signame[signal]
 		);
 	}