我担心执行Storable::store
操作时数据损坏。我正在将大约 100 MB 的数据写入 NFS 以在特定检查点备份我的计算,但该过程并不十分迅速。
为了防止损坏,我有一个SIG{INT}
信号处理程序。就在Storable::store
调用之前,设置了一个全局变量,表明终止是不安全的。完成后Storable::store
,该全局变量将返回一个值以指示可以中断。
该全局变量用于指示信号处理程序是否会调用die
,或者它是否只会打印一条语句“Can't stop yet”。
但我真的有帮助吗?我现在从阅读perlipc中看到,中断 IO 有时是安全完成的,有时则不是......也就是说,如果我的信号处理程序最终在我的Storeable::store
操作中间被调用,那么对我的信号处理程序子例程的短暂转移可能仍然足以把事情搞砸。
有谁知道Storable
在这种情况下表现如何?或者我的信号处理设置真的合适吗?