У меня есть программа под названием make, которая должна вызываться с параметрами командной строки:
make [command-line-options] [targetname]
Опции:
-C имя_каталога: перед началом выполнения make являетсясмените каталог на указанный каталог.
-f имя файла: вместо чтения его спецификации из make-файла по умолчанию, make считывает его спецификацию из указанного файла.
-i: игнорировать неудачное завершениедействия;продолжайте выполнять действия цели, даже если произойдет сбой.
-n: вывести (на стандартный вывод) каждую последовательность команд оболочки до того, как она будет выполнена, но фактически не выполнять команды.
-p: после прочтения в файле спецификации выведите его информацию на стандартный вывод.Затем выйдите с успехом.
-s: выполнить без вывода сообщений, не печатать каждую последовательность команд оболочки до ее выполнения.
Как использовать вызовы getopt()
, chdir()
и exit()
чтобы достичь этого?
Ниже приведен код, который я до сих пор выполняю:
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>
#include <getopt.h>
#define bake
int main(int argc, char *argv[])
{
int opt;
string sDirectory;
opterr = 0;
while (opt = getopt(argc, argv, bake)) != -1)
switch(opt)
{
case '-c':
int rc = chdir(sDirectory.c_str());
break;
case '-f':
break;
case '-i':
clean:
-rm -f *.o;
break;
case '-n':
break;
case '-p':
break;
case '-s':
break;
}
if (argv < 0) {
fprintf(stderr, "file: #s [-d] [progname] failed", progname);
exit(EXIT_FAILURE);
}
return 0;