reverted spawn

pull/1/head
arg@localhost.localdomain 16 years ago
parent ed1bef1241
commit e7572804fa
  1. 25
      dwm.c

25
dwm.c

@ -182,7 +182,6 @@ static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg); static void setmfact(const Arg *arg);
static void setup(void); static void setup(void);
static void showhide(Client *c); static void showhide(Client *c);
static void sigchld(int signal);
static void spawn(const Arg *arg); static void spawn(const Arg *arg);
static void tag(const Arg *arg); static void tag(const Arg *arg);
static int textnw(const char *text, unsigned int len); static int textnw(const char *text, unsigned int len);
@ -1392,24 +1391,22 @@ showhide(Client *c) {
} }
} }
void
sigchld(int signal) {
while(0 < waitpid(-1, NULL, WNOHANG));
}
void void
spawn(const Arg *arg) { spawn(const Arg *arg) {
signal(SIGCHLD, sigchld); /* The double-fork construct avoids zombie processes and keeps the code
* clean from stupid signal handlers. */
if(fork() == 0) { if(fork() == 0) {
if(dpy) if(fork() == 0) {
close(ConnectionNumber(dpy)); if(dpy)
setsid(); close(ConnectionNumber(dpy));
execvp(((char **)arg->v)[0], (char **)arg->v); setsid();
fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); execvp(((char **)arg->v)[0], (char **)arg->v);
perror(" failed"); fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
perror(" failed");
}
exit(0); exit(0);
} }
wait(0);
} }
void void

Loading…
Cancel
Save