困扰已久的问题, C语言, 链接了第三方的开源库, 这个开源库里一些出错处理(比如网络阻塞等情况)在失败时, 会使用exit(1), 还有assert等, 直接终止整个程序了.
我需要他能一直运行的, 出错了重启这个库, 或者至多仅仅这个线程挂掉.
比如: openvpn, 链接的程序, 如果参数配置错误, 直接整个程序崩溃.
有没有什么trick的方法, 把exit() 这种函数直接屏蔽掉.
困扰已久的问题, C语言, 链接了第三方的开源库, 这个开源库里一些出错处理(比如网络阻塞等情况)在失败时, 会使用exit(1), 还有assert等, 直接终止整个程序了.
我需要他能一直运行的, 出错了重启这个库, 或者至多仅仅这个线程挂掉.
比如: openvpn, 链接的程序, 如果参数配置错误, 直接整个程序崩溃.
有没有什么trick的方法, 把exit() 这种函数直接屏蔽掉.
1.2k 阅读
1 回答579 阅读
可以玩这么一个trick,写一个脚本给开源库每个头文件插入下面一段代码
下面是
custom_lib_func.h
的代码这样在预处理的时候会把exit(1)替换成你自定义的custom_exit(1)。