Implementação de shell
TRABALHO PRÁTICO 2 SHIIIIIIVA 2010
Professor: Adriano Veloso Alunos: Breno Muniz Rafhael Batista
Belo Horizonte 2010
Descrição do problema
O problema consiste em implementar uma shell mínima, chamada de shiii, para colocar em prática os princípios de manipulação de processos. Esse tipo de conhecimento é essencial no desenvolvimento de sistemas complexos, com diversos processos, como no caso de servidores.
Background( & ) : O processo deve ser disparado e a shiiva2010 deve continuar sua execução, Isso pode significar a continuação da interpretação da linha de comandos, se há outros comandos na linha, ou o retorno imediato ao prompt. Cada vez que um processo e disparado em background, shiii deve exibir uma mensagem a esse respeito, com o identificador ( pid ) do processo em questão. Operador de Background: & Exemplo:
Implementação:
Principais funções utilizadas: fork(), fprintf(),executar();
Código de programa em C:
Pipe ( | ): O conteúdo após o operador deve ser interpretado outro comando a ser executado, sendo que a saída padrão do primeiro processo deve ser conectada a entrada padrão do processo seguinte. Operador de Pipe: | Exemplo:
Implementação: Principais Funcoes: fork(), pipe, dup2, close(), execv(), wait()
Código em C
// funcao para comando PIPE int comandoPipe(char **parametros, char **parametros2) {
if (parametros[0] == NULL) { printf("%s Comando nao existe.n", parametros[0]); return 1; } if (parametros2[0] == NULL) { printf("%s Comando nao existe.n", parametros2[0]); return 1; }
int fd[2]; int pid, pid2; if (pipe(fd) == 1) { printf("Error: Pipe com falha.n"); return 1; } if ((pid = fork())