gpt4 book ai didi

c++ - 如何检测磁盘已满错误并让程序在获得可用磁盘空间后恢复

转载 作者:IT王子 更新时间:2023-10-29 00:58:01 28 4
gpt4 key购买 nike

我正在编写一个在 LINUX 上运行的应用程序,它使用 fprintf 和 fwrite 写入磁盘。我希望能够捕获“磁盘已满”错误,提示用户腾出更多空间,然后恢复操作,就好像什么事都没发生过一样。有什么优雅的解决方案吗?

最佳答案

检查每次调用 fprintf()fwrite() 的返回值。如果任一调用返回负值,请检查 errno 以查看 errno 是否等于 EDQUOTENOSPC,请参阅manpage for write (或者在 fprintf() 的情况下,甚至可能是 ENOMEM,如 some manpages for fprintf 中所述,但不是 in all )。如果是这样,您的磁盘空间可能不足。

至于若无其事地恢复运作;这有点难;您需要跟踪您成功写入磁盘的数据,以便在您通知用户并且他们表示是时候重试之后,您可以从该点恢复写入数据发生了错误。这意味着将写入状态保持在某种结构中(即不仅仅是在堆栈上),以便您可以从写入函数返回,然后再恢复它。 (或者,或者在单独的线程中进行写入,并让线程通知主线程然后阻塞,直到主线程通知回来可以安全继续……虽然这可能会有点棘手)

关于c++ - 如何检测磁盘已满错误并让程序在获得可用磁盘空间后恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128072/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com