当调用C / C ++程序时:
./prog --arg=42
命令行参数被转发到主函数
int main (int argc, char* argv[])
其中参数可以被解析(或转发到某个进行解析的库)。
我想知道在C运行时调用main函数之前是否可以拦截参数。
由于我编写了替换库,因此无法使用类似my_lib::init(argc, argv)
的初始化函数。
我知道函数的__attribute__((constructor))
因此在调用main之前调用它,但是我不知道如何在这样的标记函数中获取命令行参数。
答案 0 :(得分:4)
我认为没有标准方法来拦截调用可执行文件的入口点main()
。
但是,您可以使用--wrap
的{{1}}和-u
选项来调整可执行文件的链接过程。在链接过程中还有其他选项可以替换符号,请考虑链接器的手册。