Esempio n. 1
0
File: shell.c Progetto: Rathcke/uni
int run_command(char* cmdline) {
  char* argv[BUFFER_SIZE];
  int argc = tokenize(cmdline, argv);
  if (argc == 0) {
    return 0;
  }
  if (strcmp(argv[0], "wait") == 0) {
    return cmd_wait(argc, argv);
  } else if (strcmp(argv[0], "ls") == 0) {
    return cmd_ls(argc, argv);
  } else if (strcmp(argv[0], "cp") == 0) {
    return cmd_cp(argc, argv);
  } else if (strcmp(argv[0], "show") == 0) {
    return cmd_show(argc, argv);
  } else if (strcmp(argv[0], "rm") == 0) {
    return cmd_rm(argc, argv);
  } else if (strcmp(argv[0], "cmp") == 0) {
    return cmd_cmp(argc, argv);
  } else if (strcmp(argv[0], "echo") == 0) {
    return cmd_echo(argc, argv);
  } else if (strcmp(argv[0], "exit") == 0) {
    syscall_exit(0); 
    return 1; // not reached
  } else {
    int k = strlen(argv[argc-1]);
    if (argv[argc-1][k-1] == '&') {
      argv[argc-1][k-1] = '\0';
      return background_run(cmdline);
    } else {
      return cmd_run(cmdline);
    }
  }
}
Esempio n. 2
0
// 명령어 실행
void execute_cmdgrp(char *cmdgrp)
{
	int count = 0;
	char* last_arg = NULL;
	int len = 0;

	count = makelist(cmdgrp, " \t", cmdvector, MAX_CMD_ARG);
	last_arg = cmdvector[count-1];
	len = strlen(last_arg);

	if(len && last_arg[len-1] == '&')
	{
		last_arg[len-1] = '\0';
		if(strlen(last_arg) == 0) cmdvector[count-1] = NULL;
		background_run();
	}

	execvp(cmdvector[0], cmdvector);
	fatal("exec error");
}
Esempio n. 3
0
File: shell.c Progetto: Rotte/osm-k
int run_command(char* cmdline) {
  char* argv[BUFFER_SIZE];
  int argc = tokenize(cmdline, argv);
  if (argc == 0) {
    return 0;
  }
  if (strcmp(argv[0], "wait") == 0) {
    return cmd_wait(argc, argv);
  } else if (strcmp(argv[0], "ls") == 0) {
    return cmd_ls(argc, argv);
  } else if (strcmp(argv[0], "cp") == 0) {
    return cmd_cp(argc, argv);
  } else if (strcmp(argv[0], "show") == 0) {
    return cmd_show(argc, argv);
  } else if (strcmp(argv[0], "rm") == 0) {
    return cmd_rm(argc, argv);
  } else if (strcmp(argv[0], "pwd") == 0) {
    return cmd_pwd(argc, argv);
  } else if (strcmp(argv[0], "cd") == 0) {
    return cmd_cd(argc, argv);
  } else if (strcmp(argv[0], "cmp") == 0) {
    return cmd_cmp(argc, argv);
  } else if (strcmp(argv[0], "echo") == 0) {
    return cmd_echo(argc, argv);
  } else if (strcmp(argv[0], "mkdir") == 0) {
    return cmd_mkdir(argc, argv);
  } else if (strcmp(argv[0], "rmdir") == 0) {
    return cmd_rmdir(argc, argv);
  } else {
    int k = strlen(argv[argc-1]);
    if (argv[argc-1][k-1] == '&') {
      argv[argc-1][k-1] = '\0';
      return background_run(cmdline);
    } else {
      return cmd_run(cmdline);
    }
  }
}