понимание выполнения команды в реализации оболочки - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь понять программу здесь Я не смог понять static int split(char *cmd_exec, int input, int first, int last) функция, какова цель ввода int, сначала int, здесь int int, эта функция возвращает return command(input, first, last, new_cmd_exec1); что означают input, first, last и new_cmd_exec1? Почему мы должны проливать команды, передаваемые в оболочку? Соответствующий код следующий

static int split(char *cmd_exec, int input, int first, int last)
{
    char *new_cmd_exec1;  
    new_cmd_exec1=strdup(cmd_exec);
   //else
      {
        int m=1;
        args[0]=strtok(cmd_exec," ");       
        while((args[m]=strtok(NULL," "))!=NULL)
              m++;
        args[m]=NULL;
        if (args[0] != NULL) 
            {

            if (strcmp(args[0], "exit") == 0) 
                    exit(0);
            if (strcmp(args[0], "echo") != 0) 
                    {
                      cmd_exec = skipcomma(new_cmd_exec1);
                      int m=1;
                      args[0]=strtok(cmd_exec," ");       
                      while((args[m]=strtok(NULL," "))!=NULL)
                                m++;
                      args[m]=NULL;

                    }
            if(strcmp("cd",args[0])==0)
                    {
                    change_directory();
                    return 1;
                    }
            else if(strcmp("pwd",args[0])==0)
                    {
                    parent_directory();
                    return 1;
                    }

            }
        }
    return command(input, first, last, new_cmd_exec1);
}

1 Ответ

0 голосов
/ 04 сентября 2018

Значение переменных не ясно из кода, который вы разместили. Однако, если вы сможете найти какую-либо документацию или определение функции command(), вы сможете узнать их предназначение.

Сказав это, из кода довольно ясно, что эти параметры являются просто копиями параметров, которые первоначально были переданы в split() и переданы в command(), поэтому вполне вероятно, что целые числа являются параметрами общего назначения, чьи значение будет зависеть от возможного типа выполняемой команды.

...