mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 23:18:21 +00:00
init: unblock signals before execing into child
This commit is contained in:
+10
-1
@@ -12,6 +12,12 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
static void unblocksignals(void) {
|
||||||
|
sigset_t signals;
|
||||||
|
sigfillset(&signals);
|
||||||
|
sigprocmask(SIG_UNBLOCK, &signals, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void sendacpicommand(char c) {
|
static void sendacpicommand(char c) {
|
||||||
int acpifd = open("/dev/acpi", O_WRONLY);
|
int acpifd = open("/dev/acpi", O_WRONLY);
|
||||||
if (acpifd == -1) {
|
if (acpifd == -1) {
|
||||||
@@ -161,6 +167,8 @@ static void dorootshell(void) {
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unblocksignals();
|
||||||
|
|
||||||
execl("/usr/bin/bash", "/usr/bin/bash", "-l", NULL);
|
execl("/usr/bin/bash", "/usr/bin/bash", "-l", NULL);
|
||||||
perror("init: execl /usr/bin/bash failed");
|
perror("init: execl /usr/bin/bash failed");
|
||||||
return exit(EXIT_FAILURE);
|
return exit(EXIT_FAILURE);
|
||||||
@@ -179,6 +187,7 @@ static void dologinprompt(void) {
|
|||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
setsid();
|
setsid();
|
||||||
snatchconsole();
|
snatchconsole();
|
||||||
|
unblocksignals();
|
||||||
execl("/bin/login", NULL);
|
execl("/bin/login", NULL);
|
||||||
perror("init: exec /bin/login failed");
|
perror("init: exec /bin/login failed");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
@@ -195,7 +204,7 @@ static void dostartwm(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
|
unblocksignals();
|
||||||
execl("/usr/bin/startwm", NULL);
|
execl("/usr/bin/startwm", NULL);
|
||||||
perror("init: exec /usr/bin/startwm failed");
|
perror("init: exec /usr/bin/startwm failed");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
|||||||
Reference in New Issue
Block a user