在 C 中以编程方式调用 main(int argc, char **argv)

Programmatically calling main(int argc, char **argv) in C

假设我有一个文件 test.c,它接受一个文本文件并开始如下:

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

我通常会按如下方式编译文件并执行二进制文件:./test input.txt.

现在,我希望在同一文件的另一个函数中以编程方式调用 main 函数。我该如何进行?

您可以按如下方式进行:

#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...

小心无限递归!