Re: [v3 PATCH 17/17] eval: Add vfork support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18/05/2018 19:39, Herbert Xu wrote:
This patch adds basic vfork support for the case of a simple command.
... @@ -879,17 +892,30 @@ forkchild(struct job *jp, union node *n, int mode)
  		}
  	}
  	if (!oldlvl && iflag) {
-		setsignal(SIGINT);
-		setsignal(SIGQUIT);
+		if (mode != FORK_BG) {
+			setsignal(SIGINT);
+			setsignal(SIGQUIT);
+		}
  		setsignal(SIGTERM);
  	}
+
+	if (lvforked)
+		return;
+
  	for (jp = curjob; jp; jp = jp->prev_job)
  		freejob(jp);
  }

This leaves SIGQUIT ignored in background jobs in interactive shells.

  ENV= dash -ic 'dash -c "kill -QUIT \$\$; echo huh" & wait'

As of dash 0.5.11, this prints "huh". Before, the subprocess process killed itself before it could print anything. Other shells do not leave SIGQUIT ignored.

(In a few other shells, this also prints "huh", but in those other shells, that is because the inner shell chooses to ignore SIGQUIT, not because the outer shell leaves it ignored.)

Cheers,
Harald van Dijk



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux