Dra*_*sha 11 c c++ linux operating-system
我想模仿暴力系统关闭,即尽可能接近应用程序级别的停电.我们在谈论Linux上的c/c ++应用程序.我需要应用程序来终止自己.
目前我看到几个选项:
什么是最好的选择?
部分重复此问题
lot*_*har 26
最接近电力愤怒的恕我直言是在VM中运行应用程序并在不关闭的情况下为VM供电.在应用程序终止时操作系统仍在运行的所有其他情况下,操作系统将进行一些在实际停电时不会发生的清理.
bdo*_*lan 14
在应用程序级别,你可以得到的最暴力的是_exit().除以零,段错误等都是信号,可以被捕获 - 如果未被捕获,它们基本上与_exit()相同,但可能根据信号留下一个coredump.
如果你真的想要一个硬关机,最好的选择是尽可能以最猛烈的方式切断电源.调用/ sbin/poweroff -fn尽可能接近,尽管它可能会在硬件级别进行一些清理.
但是,如果你真的想要强调一些事情,最好的办法是真正地,真正地削减功率 - 在电源线上安装某种软件控制的继电器,并将软件切断.不受控制的权力丧失将导致各种怪异的东西.例如,由于RAM在DMA控制器或硬盘之前断电,磁盘上的数据可能会损坏.除了实际切断功率之外,在生产硬件配置中,通过多次试验,您无法测试任何其他东西.
Bil*_*nch 11
kill -9
Run Code Online (Sandbox Code Playgroud)
它会终止进程并且不允许任何信号处理程序运行.
为什么不停下来?还是打电话恐慌?
尝试
raise(SIGKILL)
Run Code Online (Sandbox Code Playgroud)
在此过程中,或从命令行:
kill -9 pid
Run Code Online (Sandbox Code Playgroud)
其中pid是你的进程的PID(这两个方法是等价的,不应该执行任何清理)
你不清楚你的要求是什么.如果您正在测试如何从电源故障中恢复,则需要实际导致电源故障.即使像内核恐慌这样的事情也会允许硬盘上的写缓冲区刷新,因为它们独立于CPU.
如果您确实需要测试完整的故障情况,远程电源板可能是一种解决方案.