Did some stuff
[matches/swarm.git] / src / slave.c
index 65e11c8..622bc7b 100644 (file)
@@ -35,13 +35,15 @@ void Slave_cleanup();
 
 void Slave_main(Options * o)
 {
+       //fprintf(stderr, "%d\n", o->nCPU);
+
 
        
        setbuf(stdin, NULL); setbuf(stdout, NULL); setbuf(stderr, NULL);
 
        dup2(fileno(stdout), fileno(stderr)); // yes, this works, apparently
 
-       slave = (Slave*)(calloc(o->nCPU, sizeof(slave)));       
+       slave = (Slave*)(calloc(o->nCPU, sizeof(Slave)));       
        atexit(Slave_cleanup);
 
 
@@ -68,7 +70,8 @@ void Slave_main(Options * o)
 
        fgets(name, sizeof(name), stdin);
        name[strlen(name)-1] = '\0';
-       //log_print(2, "Slave_main", "Got name %s", name);
+       //log_print(LOGINFO, "Slave_main", "Started remote swarm \"%s\"", name);
+
 
        fprintf(stdout, "%d\n", o->nCPU);
        //log_print(2, "Slave_main", "Wrote nCPU %d", o->nCPU);
@@ -160,30 +163,12 @@ void Slave_loop(Options * o)
                if (i >= o->nCPU)
                        error("Slave_loop", "No child matches pid %d", p);
 
-
-               
-               fprintf(stderr,"Unexpected exit of slave %s:%d", name, i);
-               if (WIFSIGNALED(s))
-               {
-                       int sig = WTERMSIG(s);
-                       fprintf(stderr," due to %s", strsignal(sig));
-                       if (sig == SIGKILL)
-                       {
-                               fprintf(stderr," - %s committing suicide\n", name);
-                               kill(getpid(), sig);
-                       }
-               }
-               else
-               {               
-                       fprintf(stderr," return code %d.", s);
-               }
+               sigchld_respond(s, name, i);
                
 
                // cancel any tasks at the master for this slave
-               static int len = -1;
-               if (len < 0)
-                       len = strlen(o->end);
-               write(slave[i].out, o->end, len);
+               
+               write(slave[i].out, SHELL_OUTPUT_FINISHED, SHELL_OUTPUT_FINISHED_LENGTH);
 
                Slave_shell(i, o->shell);
 

UCC git Repository :: git.ucc.asn.au