util.c
changeset 9 d567f430a81d
parent 6 e0cefb3981c8
child 11 ea9c08ec4b48
equal deleted inserted replaced
8:7066ff2fe8bc 9:d567f430a81d
    91 
    91 
    92 	if(!cmd)
    92 	if(!cmd)
    93 		return;
    93 		return;
    94 	if(fork() == 0) {
    94 	if(fork() == 0) {
    95 		if(fork() == 0) {
    95 		if(fork() == 0) {
    96 			setsid();
       
    97 			if(dpy)
    96 			if(dpy)
    98 				close(ConnectionNumber(dpy));
    97 				close(ConnectionNumber(dpy));
    99 			execlp(shell, "shell", "-c", cmd, NULL);
    98 			setsid();
   100 			fprintf(stderr, "gridwm: execvp %s", cmd);
    99 			fprintf(stderr, "gridwm: execlp %s %s -c %s", shell, shell, cmd);
       
   100 			execlp(shell, shell, "-c", cmd, NULL);
       
   101 			fprintf(stderr, "gridwm: execlp %s", cmd);
   101 			perror(" failed");
   102 			perror(" failed");
   102 		}
   103 		}
   103 		exit (0);
   104 		exit (0);
   104 	}
   105 	}
   105 	wait(0);
   106 	wait(0);
   121 		perror("pipe");
   122 		perror("pipe");
   122 		exit(1);
   123 		exit(1);
   123 	}
   124 	}
   124 
   125 
   125 	if(fork() == 0) {
   126 	if(fork() == 0) {
   126 		setsid();
       
   127 		if(dpy)
   127 		if(dpy)
   128 			close(ConnectionNumber(dpy));
   128 			close(ConnectionNumber(dpy));
       
   129 		setsid();
   129 		dup2(pfd[1], STDOUT_FILENO);
   130 		dup2(pfd[1], STDOUT_FILENO);
   130 		close(pfd[0]);
   131 		close(pfd[0]);
   131 		close(pfd[1]);
   132 		close(pfd[1]);
   132 		execlp(shell, "shell", "-c", cmd, NULL);
   133 		execlp(shell, shell, "-c", cmd, NULL);
   133 		fprintf(stderr, "gridwm: execvp %s", cmd);
   134 		fprintf(stderr, "gridwm: execlp %s", cmd);
   134 		perror(" failed");
   135 		perror(" failed");
   135 	}
   136 	}
   136 	else {
   137 	else {
   137 		n = 0;
   138 		n = 0;
   138 		close(pfd[1]);
   139 		close(pfd[1]);