Программный вызов main (int arg c, char ** argv) в C - PullRequest
0 голосов
/ 28 марта 2020

Допустим, у меня есть файл test.c, который принимает текстовый файл и начинается следующим образом:

int main(int argc, char **argv)
{
  ...
  return 0;
}

Обычно я скомпилирую файл и выполню двоичный файл следующим образом: ./test input.txt.

Теперь я sh вызову функции main программно в другой функции в том же файле. Как мне поступить?

1 Ответ

2 голосов
/ 28 марта 2020

Вы можете сделать это следующим образом:

#include <stdio.h>

int main(int argc, char *argv[]);

void func()
{
    char *argv[] = { "./test", "another.txt", NULL };
    main(2, argv);
}

int main(int argc, char *argv[])
{
    if (argc > 1) {
        printf("Processing %s...\n", argv[1]);
    }

    /* ... */

    func();

    return 0;
}

Это должно вывести что-то вроде:

Processing input.txt...
Processing another.txt...

Остерегайтесь бесконечной рекурсии!

...