有没有办法在调用 main 函数之前解析命令行选项?
Is there a way to parse command line options before main function is called?
当 C/C++ 程序被调用时:
./prog --arg=42
命令行参数被转发到主函数
int main (int argc, char* argv[])
在哪里可以解析参数(或转发到某个进行解析的库)。
我想知道是否可以在C运行时调用主函数之前拦截参数。
因为我写了一个替换库,所以我不能使用像 my_lib::init(argc, argv)
.
这样的初始化函数
我知道一个函数的 __attribute__((constructor))
,所以它在调用 main 之前被调用,但是我不知道如何在这样一个标记的函数中获取命令行参数。
我认为没有标准的方法来拦截调用可执行文件的入口点 main()
。
但是,您可以调整可执行文件的链接过程,例如可以使用 ld
的 --wrap
和 -u
选项。在链接过程中还有更多选项可以替换符号,请考虑您的链接器手册。
当 C/C++ 程序被调用时:
./prog --arg=42
命令行参数被转发到主函数
int main (int argc, char* argv[])
在哪里可以解析参数(或转发到某个进行解析的库)。
我想知道是否可以在C运行时调用主函数之前拦截参数。
因为我写了一个替换库,所以我不能使用像 my_lib::init(argc, argv)
.
我知道一个函数的 __attribute__((constructor))
,所以它在调用 main 之前被调用,但是我不知道如何在这样一个标记的函数中获取命令行参数。
我认为没有标准的方法来拦截调用可执行文件的入口点 main()
。
但是,您可以调整可执行文件的链接过程,例如可以使用 ld
的 --wrap
和 -u
选项。在链接过程中还有更多选项可以替换符号,请考虑您的链接器手册。