Вы можете сделать это следующим образом:
#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...
Остерегайтесь бесконечной рекурсии!