在调用main函数之前,是否有方法解析命令行选项?

Is there a way to parse command line options before main function is called?

本文关键字:有方法 命令行 选项 是否 main 调用 函数      更新时间:2023-10-16

当C/c++程序被调用时:

./prog --arg=42

命令行参数被转发到main函数

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

,其中可以解析参数(或转发到执行解析的库)。

我想知道是否有可能在C运行时调用main函数之前拦截参数。因为我写了一个替换库,所以我不能使用像my_lib::init(argc, argv)这样的init函数。

我知道一个函数的__attribute__((constructor)),所以它在main被调用之前被调用,但是我不知道如何在这样一个标记的函数中获得命令行参数。

我认为没有标准的方法来拦截调用可执行文件的入口点main()

但是,您可以调整可执行文件的链接过程,例如可以使用ld--wrap-u选项。在链接过程中还有其他替代符号的选项,请参考您的链接器手册。