}
eConsoleAppContainer::eConsoleAppContainer()
-:pid(-1), killstate(0)
+:pid(-1), killstate(0), in(0), out(0), err(0)
{
for (int i=0; i < 3; ++i)
fd[i]=-1;
tmp.erase(tmp.length()-1, 1);
bracketClosed=false;
}
+// eDebug("new argv[%d] %d bytes", tmp.length()+1);
argv[cnt] = new char[ tmp.length()+1 ];
// eDebug("idx=%d, arg = %s", idx, tmp.c_str() );
strcpy( argv[cnt++], tmp.c_str() );
cmds.erase(cmds.length()-1, 1);
}
// store the last arg
- argv[cnt] = new char[ cmds.length() ];
+// eDebug("new argv[%d] %d bytes", cmds.length());
+ argv[cnt] = new char[ cmds.length()+1 ];
strcpy( argv[cnt], cmds.c_str() );
}
else
void eConsoleAppContainer::closePipes()
{
- in->stop();
- out->stop();
- err->stop();
- ::close(fd[0]);
- fd[0]=-1;
- ::close(fd[1]);
- fd[1]=-1;
- ::close(fd[2]);
- fd[2]=-1;
+ if (in)
+ in->stop();
+ if (out)
+ out->stop();
+ if (err)
+ err->stop();
+ if (fd[0] != -1)
+ {
+ ::close(fd[0]);
+ fd[0]=-1;
+ }
+ if (fd[1] != -1)
+ {
+ ::close(fd[1]);
+ fd[1]=-1;
+ }
+ if (fd[2] != -1)
+ {
+ ::close(fd[2]);
+ fd[2]=-1;
+ }
eDebug("pipes closed");
while( outbuf.size() ) // cleanup out buffer
{
if ( !outbuf.size() )
out->stop();
}
+
\ No newline at end of file