Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <string.h>
- #include <sys/wait.h>
- void parse_input(char **argv, char *cmdbuf){
- char argbuf[1000] = "",
- *abp = argbuf,
- **avp = argv,
- *cbp = cmdbuf;
- while(1){
- if(*cbp == ' ' || *cbp == '\n'){
- *avp = calloc(sizeof(char), 100);
- strcpy(*avp, argbuf);
- abp = argbuf;
- avp++;
- cbp++;
- continue;
- }
- if(*cbp == 0){
- *avp = 0;
- break;
- }
- *(abp++) = *(cbp++);
- }
- }
- void teardown_argv(char **argv){
- while(*argv)
- free(*(argv++));
- }
- int run_argv(char **argv){
- pid_t pid = fork();
- if(pid == 0){
- execvp(*argv, argv);
- perror("Error");
- } else {
- wait(0);
- teardown_argv(argv);
- }
- }
- int main(){
- char cmdbuf[1000] = "",
- *argv[100];
- while (1){
- printf("Crap Shell> ");
- fgets(cmdbuf, 1000, stdin);
- parse_input(argv, cmdbuf);
- run_argv(argv);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement