diff options
author | Luke Smith <luke@lukesmith.xyz> | 2020-08-28 19:27:12 -0400 |
---|---|---|
committer | Luke Smith <luke@lukesmith.xyz> | 2020-08-28 19:27:12 -0400 |
commit | 7524ccd1e5eb69ab177cb7f0bc4044994464be6e (patch) | |
tree | 85cf3aeed1abd28647079a16d455c947bacb7ac4 | |
parent | 8b313712dc8000ce65b229e3089f429bc9fc8cd9 (diff) | |
download | dwmblocks-7524ccd1e5eb69ab177cb7f0bc4044994464be6e.tar.gz dwmblocks-7524ccd1e5eb69ab177cb7f0bc4044994464be6e.tar.bz2 dwmblocks-7524ccd1e5eb69ab177cb7f0bc4044994464be6e.zip |
update and fork fix
-rw-r--r-- | dwmblocks.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/dwmblocks.c b/dwmblocks.c index d135a7d..68267d7 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -193,6 +193,7 @@ void sighandler(int signum) void buttonhandler(int sig, siginfo_t *si, void *ucontext) { char button[2] = {'0' + si->si_value.sival_int & 0xff, '\0'}; + pid_t process_id = getpid(); sig = si->si_value.sival_int >> 8; if (fork() == 0) { @@ -203,14 +204,14 @@ void buttonhandler(int sig, siginfo_t *si, void *ucontext) if (current->signal == sig) break; } - char *command[] = { "/bin/sh", "-c", current->command, NULL }; + char shcmd[1024]; + sprintf(shcmd,"%s && kill -%d %d",current->command, current->signal+34,process_id); + char *command[] = { "/bin/sh", "-c", shcmd, NULL }; setenv("BLOCK_BUTTON", button, 1); setsid(); execvp(command[0], command); exit(EXIT_SUCCESS); } - getsigcmds(sig); - writestatus(); } #endif |