SIGSTOP和SIGTSTP会损坏JVM吗?

SIGSTOP和SIGTSTP会损坏JVM吗?,第1张

概述SIGSTOP和SIGTSTP会损坏JVM吗?

在linux中有两个不同的信号可以用来暂停进程, SIGStop和SIGTSTP 。 两者都不由HotSpot虚拟机处理,因为SIGStop不能被捕获,而SIGTSTP 因为不被HotSpot处理 。 我想知道发送这两个信号是否安全,或者在不安全的情况下, JVM的哪个部分会受到影响(比如垃圾收集器)。 请注意,我并不关心在JVM上运行的程序可能存在的问题,我特别关心JVM的内部。 将Stop / TSTP发送到JVM是否安全?

捕捉信号:使用成员函数作为信号处理程序

C ++,linux,fork,execvp,waitpID和SIGTSP

试图在linux上closures睡眠

Boost.asio和UNIX信号处理

什么是Unix的信号?

SIGStop和SIGTSTP不包含在HotSpot JVM的信号处理中并不意味着HotSpot JVM不支持它们。

这只意味着这两个信号没有特殊的处理。 一些信号( SIGSEGV , SIGTERM等)由HotSpot JVM专门处理,以实现某些功能 (隐式空检查,关闭挂钩等)。

那些没有特别处理的,他们将表现默认的方式 。 因此,当HotSpot收到SIGStop和SIGTSTP ,它将表现为默认的方式,这意味着暂停和终端暂停 。

事实上, SIGStop不能被忽略。 从信号(7)的手册页 :

信号SIGKILL和SIGStop不能被捕获,阻塞或忽略。

我们可以通过一个简单的C程序来演示:

#include<stdio.h> #include<unistd.h> int main() { while(1) { printf("Hello Worldn"); usleep(900000); } return 0; }

没有信号处理SIGStop或SIGTSTP ,但是仍然可以将它们发送到这个简单的程序,它们的行为是正确的。

按Ctrl + Z将发送一个SIGTSTP信号,并通过运行kill -19 pID将发送一个SIGStop信号。 演示程序将暂停。

在这两种情况下,运行kill -18 pID将发送SIGCONT信号,并将演示程序恢复执行。

总结

以上是内存溢出为你收集整理的SIGSTOP和SIGTSTP会损坏JVM吗?全部内容,希望文章能够帮你解决SIGSTOP和SIGTSTP会损坏JVM吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1257341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存