mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-06 13:29:53 -05:00
opt: optimize run autostart script
This commit is contained in:
parent
d80fb44e72
commit
fc94c44dab
1 changed files with 21 additions and 21 deletions
42
src/maomao.c
42
src/maomao.c
|
|
@ -2512,12 +2512,11 @@ void cleanup(void) {
|
||||||
xwayland = NULL;
|
xwayland = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wl_display_destroy_clients(dpy);
|
wl_display_destroy_clients(dpy);
|
||||||
if (getpgid(child_pid) == child_pid) { // 检查是否是进程组 leader
|
if (child_pid > 0) {
|
||||||
kill(-child_pid, SIGTERM); // 是,则杀死整个进程组
|
kill(-child_pid, SIGTERM);
|
||||||
} else {
|
waitpid(child_pid, NULL, 0);
|
||||||
kill(child_pid, SIGTERM); // 否,只杀死单个进程
|
}
|
||||||
}
|
|
||||||
wlr_xcursor_manager_destroy(cursor_mgr);
|
wlr_xcursor_manager_destroy(cursor_mgr);
|
||||||
|
|
||||||
destroykeyboardgroup(&kb_group->destroy, NULL);
|
destroykeyboardgroup(&kb_group->destroy, NULL);
|
||||||
|
|
@ -5029,21 +5028,22 @@ run(char *startup_cmd) {
|
||||||
if(!startup_cmd)
|
if(!startup_cmd)
|
||||||
startup_cmd = autostartexec(autostart_temp_path, sizeof(autostart_temp_path));
|
startup_cmd = autostartexec(autostart_temp_path, sizeof(autostart_temp_path));
|
||||||
if (startup_cmd) {
|
if (startup_cmd) {
|
||||||
int piperw[2];
|
int piperw[2];
|
||||||
if (pipe(piperw) < 0)
|
if (pipe(piperw) < 0)
|
||||||
die("startup: pipe:");
|
die("startup: pipe:");
|
||||||
if ((child_pid = fork()) < 0)
|
if ((child_pid = fork()) < 0)
|
||||||
die("startup: fork:");
|
die("startup: fork:");
|
||||||
if (child_pid == 0) {
|
if (child_pid == 0) {
|
||||||
dup2(piperw[0], STDIN_FILENO);
|
setsid();
|
||||||
close(piperw[0]);
|
dup2(piperw[0], STDIN_FILENO);
|
||||||
close(piperw[1]);
|
close(piperw[0]);
|
||||||
execl("/bin/sh", "/bin/sh", "-c", startup_cmd, NULL);
|
close(piperw[1]);
|
||||||
die("startup: execl:");
|
execl("/bin/sh", "/bin/sh", "-c", startup_cmd, NULL);
|
||||||
}
|
die("startup: execl:");
|
||||||
dup2(piperw[1], STDOUT_FILENO);
|
}
|
||||||
close(piperw[1]);
|
dup2(piperw[1], STDOUT_FILENO);
|
||||||
close(piperw[0]);
|
close(piperw[1]);
|
||||||
|
close(piperw[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark stdout as non-blocking to avoid people who does not close stdin
|
/* Mark stdout as non-blocking to avoid people who does not close stdin
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue