소스 검색

Forward termination signals to the child

Samuel Thibault 5 년 전
부모
커밋
c50abff2b0
1개의 변경된 파일12개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      tests/loader.c

+ 12 - 0
tests/loader.c

@@ -179,6 +179,13 @@ static void test_cleaner(int sig)
 	exit(EXIT_FAILURE);
 }
 
+static void forwardsig(int sig)
+{
+	pid_t child_gid;
+	child_gid = getpgid(child_pid);
+	kill(-child_gid, sig);
+}
+
 static int _decode(char **src, char *motif, const char *value)
 {
 	char *found;
@@ -355,6 +362,11 @@ int main(int argc, char *argv[])
 	if (-1 == sigaction(SIGALRM, &sa, NULL))
 		perror("sigaction");
 
+	signal(SIGINT, forwardsig);
+	signal(SIGHUP, forwardsig);
+	signal(SIGPIPE, forwardsig);
+	signal(SIGTERM, forwardsig);
+
 	child_pid = fork();
 	if (child_pid == 0)
 	{