通过子进程关闭PC后会发生什么?

问题描述 投票:0回答:1

我试图关闭我的电脑并在局域网上重新启动它。

获取其中一个命令(关闭或重启)时,我执行以下操作之一:

subprocess.call(["shutdown", "-f", "-s", "-y"]) # Turn off

subprocess.call(["shutdown", "-f", "-r", "-t", "-c", "-y"]) # Restart

我想告诉对方该过程是否成功启动,以及PC是否处于所需状态。

我知道有可能在执行命令几秒后实现一个检查PC是否处于活动状态的功能(这是一个非常好的主意),但是如何知道需要多少秒?如果PC在发送一条消息表明它仍然存在后会关闭片刻怎么办?

我很想知道 - 这些命令执行后到底发生了什么?脚本是否会继续运行,直到任务管理器将其终止?它会在命令后立即停止运行吗?

python multithreading subprocess task shutdown
1个回答
1
投票

shutdown这样的程序只是向init(或任何现代替代品)发送消息并立即退出;这取决于接下来发生的事情。典型的Unix行为是首先关闭SSH服务器之类的东西(可能不会终止与机器的连接),然后将SIGTERM发送到所有进程,等待几秒钟(典型值为5)以便信号处理程序运行,然后将SIGKILL发送给任何幸存者。最后,卸载文件系统,并发生硬件暂停或重新启动。

虽然不能保证第一阶段需要足够长的时间来报告成功的shutdown执行,但它通常会;如果这是一个问题,你可以抓住SIGTERM自己购买那些额外的几秒钟来获取消息。

© www.soinside.com 2019 - 2024. All rights reserved.