Как я могу изменить программу загрузки в C - PullRequest
0 голосов
/ 30 ноября 2018

Рекомендации по назначению

https://github.com/OliverRyan123/loader -> c файлом на github

Я пытаюсь понять, как изменить этот файл, чтобы он позволялдля N, равного 3, а не только 2. Надеюсь, кто-то может помочь, или, по крайней мере, направить меня в правильном направлении?

править: я полагаю, мой вопрос довольно расплывчатый.Присвоение просит меня изменить текущий код, чтобы при вводе пользователем входного файла a.out 3 текущий вывод отличался от N = 2. На данный момент код допускает только, когда N = 2, илискорее 8 семафоров, 2 загрузчика, 2 exec, 2 выхода и 2 принтера.Просто job0 и job1.Мне нужно изменить код, чтобы в функциях принтера, процессора и загрузчика он выполнял дополнительный загрузчик, exec, вывод и принтер или снова задание2.Таким образом, как показано выше в ссылке назначения, где N = 3, он загрузит job0 в память 0-9, job1 в 10-19 и job2 (что необходимо кодировать) в 20-29.Затем он напечатает job0 в 30-39, job1 в 40-49 и job2 (новый) 50-59.Я был в состоянии добавить в основной пакет командной строки, поэтому, когда пользователь вводит a.out 2 inputfilename, он инициализирует 8 семафоров, а когда a.out 3 inputfilename, он инициализирует 12 семафоров.Хотя сейчас я не знаю, куда идти.

Входной файл также находится в github.

1 Ответ

0 голосов
/ 30 ноября 2018

Похоже, вы просто спрашиваете, как установить переменную из командной строки при запуске программы.Следующее должно помочь:

#include <stdio.h>
#include <stdlib.h>

// Used on error, returns one to simplify error checking blocks.

int Usage(char *reason) {
    fprintf(stderr, "ERROR: %s\n", reason);
    fprintf(stderr, "Usage: progName N, where N is 2 or 3.\n");
    return 1;
}

// Main showing how to verify arguments.

int main(int argc, char *argv[]) {
    // Check for program 'name' and one other argument.

    if (argc != 2) return Usage("wrong number of arguments");

    // Get and check that other argument.

    int n = atoi(argv[1]);
    if (n < 2 || n > 3) return Usage("N is neither 2 nor 3");

    // n is now 2 or 3, go wild!
}
...