rendered paste body....
char **Genvp=0;
....
void restart_self(int something){
char*args[6];
char arga[512],argb[512];
int ret;
args[0]="/usr/bin/valgrind";
args[1]="./feedmain";
args[2]="-restart";
args[3]=arga;
args[4]=argb;
args[5]=0;
printf("'restarting' program\n");
for(int x=0;x<200;x++){
if (clients[x]>=0) {
close(clients[x]);
clients[x]=-1;
}
}
snprintf(arga,500,"%d",feedoutfd);
snprintf(argb,500,"%d",feedinfd);
system("make");
ret=execve("/usr/bin/valgrind",args,Genvp);
if (ret){
printf("ERROR %d on execve in feedmain\n",ret);
}
}
...
int main(int argc,char *argv[],char* envp[]){
fd_set reads,write,error;
int run=1,clientc=0,startup=-1;
char buff[1024];
struct timeval tv;
Genvp=envp;
signal(SIGHUP,restart_self);
...