瀏覽代碼

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);
 	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)
 static int _decode(char **src, char *motif, const char *value)
 {
 {
 	char *found;
 	char *found;
@@ -355,6 +362,11 @@ int main(int argc, char *argv[])
 	if (-1 == sigaction(SIGALRM, &sa, NULL))
 	if (-1 == sigaction(SIGALRM, &sa, NULL))
 		perror("sigaction");
 		perror("sigaction");
 
 
+	signal(SIGINT, forwardsig);
+	signal(SIGHUP, forwardsig);
+	signal(SIGPIPE, forwardsig);
+	signal(SIGTERM, forwardsig);
+
 	child_pid = fork();
 	child_pid = fork();
 	if (child_pid == 0)
 	if (child_pid == 0)
 	{
 	{