reverted spawn

This commit is contained in:
arg@localhost.localdomain 2008-12-06 09:16:48 +00:00
parent ed1bef1241
commit e7572804fa

13
dwm.c
View file

@ -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,15 +1391,11 @@ 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(fork() == 0) {
if(dpy) if(dpy)
close(ConnectionNumber(dpy)); close(ConnectionNumber(dpy));
@ -1408,8 +1403,10 @@ spawn(const Arg *arg) {
execvp(((char **)arg->v)[0], (char **)arg->v); execvp(((char **)arg->v)[0], (char **)arg->v);
fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
perror(" failed"); perror(" failed");
}
exit(0); exit(0);
} }
wait(0);
} }
void void