Minishell
Publicado por Marcelo R. Castelo Branco 17/04/2005
[ Hits: 12.416 ]
Um minishell desenvolvido em C.
As bibliotecas abaixo devem estar instaladas:
types.h
stat.h
fcntl.h
unistd.h
stdio.h
string.h
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <string.h> char cmd[512]; char dir[4096]; char *argv[3]; int pid; int main(void) { while (1) { printf("[Crasher]$ "); //escreve o prompt na tela. fgets(cmd, 511, stdin); cmd[strlen(cmd) - 1] = 0; // troca o enter = \n por um novo {FONTE} = 0 if (strcmp(cmd, "exit") == 0) // se o resultado da comparação for 0 = V finaliza o shell exit (0); else { argv[0] = strtok(cmd, " "); argv[1] = strtok(NULL, " "); argv[2] = NULL; if (strcmp(argv[0], "pwd") == 0) { getcwd(dir, 4096); printf("%s\n", dir); } else if (strcmp(argv[0], "cd") == 0) { if (chdir(argv[1]) != 0) printf("Caminho inválido!\n"); } else { pid = fork(); if (pid == 0) { if (execvp(argv[0], argv) == -1) { printf("Comando inválido\n"); exit (0); } } else { wait(); } } } } return 0; }
Agenda feita em C usando árvore binária
Manipulação de um vetor de registros
Google Code Jam 2010 - Africa Classification Round A
DOOM clássico (quase) vanilla e um pouco melhorado
Mamãe, quero descompactar e também compactar arquivos no terminal!
Instalando Micosoft Edge no Fedora 40
junest - Mini Arch Linux dentro de sua Distro
Rescuezilla - o Clonezilla com interface gráfica e ferramentas
Latte Dock, um dock de aplicativos com várias opções de configuração para o KDE Plasma
Por que aprender comandos como tail e find? (1)