Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
pessoal, to precisando fazer um shell em C que execute a seguinte linha de comando ( estilo bash )
eu consegui ate fazer executar o pipe com 2 comandos, mas e com um numero indefinido? teria que fazer uma recursividade? como faço??? ajudem por favor
codigo da função que fiz
void execute( char **cmd, int cmdIndex )
{
int fd[2];
int estado;
pid_t pid;
if( getArrayLength( cmd ) > 1 )
{
pipe( fd );
pid = fork();
if( pid > 0 )
{
char **cmd1 = stringToArray( cmd[cmdIndex], " " );
close( fd[0] );
dup2( fd[1],1 );
close( fd[1] );
if( execv( cmd1[0], cmd1 ) )
puts( "erro pipe 1" );
}
else if( pid == 0 )
{
char **cmd2 = stringToArray( cmd[cmdIndex+1], "" );
close( fd[1] );
dup2( fd[0],0 );
close( fd[0] );
if( execv( cmd2[0], cmd2 ) )
puts( "erro pipe 2" );
wait( &estado );
}
}
}Carregando comentários...