https://github.com/OliverRyan123/loader-> github上的c文件
我试图了解如何更改此文件,以使N等于3,而不是2。希望有人能提供帮助,或者至少指向正确的方向吗?
编辑: 我想我的问题比较模糊。作业要求我更改当前代码,以便当用户输入a.out 3输入文件时,当前输出将不同于N =2。到目前为止,该代码仅允许N = 2或而是8个信号灯,2个加载器,2个exec,2个输出和2个打印机。简单来说,job0和job1。我需要更改代码,以便在打印机,cpu和加载器功能中,它将执行其他加载器,exec,输出和打印机,或再次执行job2。因此,当上面的分配链接显示N = 3时,它将把job0加载到内存0-9中,将job1加载到10-19中,将job2(需要编码的内容)加载到20-29中。然后,它将打印作业0在30-39,作业1在40-49,以及作业2(新)50-59。我已经能够在main中添加命令行参数,因此,当用户键入a.out 2 inputfilename时,它将初始化8个信号量;当其a.out 3 inputfilename时,它将初始化12个信号量。虽然,现在我不知道要去哪里。
输入文件现在也在github中。
答案 0 :(得分:1)
看来您只是在启动程序时询问如何从命令行设置变量。以下内容应有所帮助:
#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!
}