- char *argv_[argv.size()+1];
- for(CountingIterator<string, list<string>::iterator> i=argv.begin(); i!=argv.end(); ++i)
- argv_[i.count()]=strdup(i->c_str());
- argv_[argv.size()]=0;
- execvp(argv_[0], argv_);
- exit(1);
+ pid=fork();
+ if(pid==0)
+ {
+ char *argv_[argv.size()+1];
+
+ unsigned j=0;
+ for(StringList::iterator i=argv.begin(); i!=argv.end(); ++i)
+ argv_[j++]=strdup(i->c_str());
+ argv_[j]=0;
+
+ execvp(argv_[0], argv_);
+ cout<<"Couldn't execute "<<argv.front()<<'\n';
+ exit(1);
+ }
+ else if(pid<0)
+ pid=0;