登录
首页 >  Golang >  Go问答

调用 c 语言程序在 go 或 java 中的潜在风险是什么?

来源:stackoverflow

时间:2024-02-13 14:00:23 213浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《调用 c 语言程序在 go 或 java 中的潜在风险是什么?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

这可以通过标准机制(例如 Java 的 JNI)来完成。如果 c lib 中出现问题会发生什么?说一个分段错误。这会让包含进程崩溃吗?

相比之下,从 go 程序调用 go lib 似乎更安全(或者从 java 程序调用 java lib)。库可以抛出异常,但容器可以继续前进。当然,像 OutOfMemory 这样的事情可能会导致整个过程中断,但至少可以清楚发生了什么。


解决方案


在这方面,从 C 调用的 C 和从 Java 调用的 C 之间没有太大区别。如果不处理 SIGSEGV 将使进程崩溃;否则它将执行处理程序所做的任何事情。但一般来说,通过忽略严重故障来从随机程序行为中恢复是不明智的;您的地址空间可能处于某种奇怪的状态,您没有编写代码来处理。

通过 JNI 调用 C 的真正问题是,C 可能会破坏 Java 结构(例如 JVM 堆),而这在 Java 中是不可能的。而且损坏直到一段时间后才会出现,导致调试失败。

本篇关于《调用 c 语言程序在 go 或 java 中的潜在风险是什么?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>