困扰已久的问题, C语言, 链接了第三方的开源库, 库中用了exit(1)如何避免?
困扰已久的问题, C语言, 链接了第三方的开源库, 这个开源库里一些出错处理(比如网络阻塞等情况)在失败时, 会使用exit(1), 还有assert等, 直接终止整个程序了.
我需要他能一直运行的, 出错了重启这个库, 或者至多仅仅这个线程挂掉.
比如: openvpn, 链接的程序, 如果参数配置错误, 直接整个程序崩溃.
有没有什么trick的方法, 把exit() 这种函数直接屏蔽掉.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以玩这么一个trick,写一个脚本给开源库每个头文件插入下面一段代码
下面是
custom_lib_func.h
的代码这样在预处理的时候会把exit(1)替换成你自定义的custom_exit(1)。
再开个进程?
不考虑版权问题的话,改一下源码再用
两个思路:
1、编译时屏蔽,对exit函数和assert函数打桩
2、运行时屏蔽,exit(1)没辙,assert函数可以考虑修改SIGABRT信号的默认处理函数。