Trabalho Disciplina de Sistemas Operacionais
Por: glaucia.melissa • 14/9/2022 • Artigo • 771 Palavras (4 Páginas) • 160 Visualizações
Trabalho Prático (mini-shell) – 2ª Unidade
Disciplina de Sistemas Operacionais
TRABALHO PRÁTICO 1
Desenvolvendo um mini-shell
OBJETIVOS: Este trabalho visa o desenvolvimento de um interpretador de comandos internos fornecendo aos alunos um primeiro contato com programação avançada em UNIX tendo como base a linguagem C.
EQUIPE: O trabalho deve ser desenvolvido por no máximo TRÊS alunos e apresentado ao professor. Deve ser entregue um relatório com todo o desenvolvimento do trabalho.
PONTUAÇÃO: No máximo três pontos e meio, dependendo do trabalho desenvolvido.
DESCRIÇÃO: O interpretador de comandos deve apresentar um sinal de prontidão (prompt) ao utilizador e aguardar que este introduza um comando, que é então interpretado pelo shell. Este processo se repetirá até que o utilizador digite exit.
ciclo {
afixa prompt;
lê linha;
interpreta a linha e executa o comando
(se for “exit”, o programa termina)
}
COMANDOS:
|
|
|
|
|
|
|
|
|
|
OBSERVAÇÕES:
∙ Não esquecer de trabalhar com funções de chamadas de sistema;
∙ Se uma chamada de sistema falhar, o programa em execução deve apresentar uma mensagem de erro apropriada;
∙ Se for digitado um comando que não seja reconhecido, apresentar uma mensagem indicando para o utilizador.
ORIENTAÇÕES PARA DESENVOLVIMENTO DO TRABALHO:
∙ Pode-se começar o desenvolvimento do ciclo isolando cada uma das palavras digitadas e reconhecer alguns comandos, indicados na primeira palavra. Ex.: comando arg1 arg2...
∙ O interpretador deve separar cada uma das palavras pelos espaços em branco ou tabulações, usando um vetor de strings.
∙ Linhas em branco devem ser ignoradas.
∙ Comece por implementar o ciclo acima e o código que analisa cada linha de comando isolando cada palavra. Deve ser capaz de construir um vector de strings, onde cada posição desse vector tem (aponta) uma palavra, à semelhança do argv na função main do C/C++. Sugere-se assim que leia para um vector toda a linha de comando (veja fgets) e siga uma das duas abordagens seguintes:
...