Как вызвать программу с помощью параметров командной строки? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть программа под названием 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;
...