gpt4 book ai didi

perl - 什么可能导致 perl 打印错误?

转载 作者:行者123 更新时间:2023-12-04 11:55:50 25 4
gpt4 key购买 nike

我有一个长时间运行的脚本,每小时打开一个文件,打印到它并关闭文件。我最近发现很少有打印失败的情况,不是因为我正在测试打印本身的状态,而是因为在系统实际重新启动之前文件中缺少条目的事实!

我会捕获文件打开失败并在发生这种情况时向 syslog 写入一条消息,但我没有看到任何打开失败,所以我现在猜测可能是打印失败了。我不会捕获打印失败,我怀疑大多数人不会,但现在要更新那一张打印件。

同时,我的问题是,当有足够的磁盘存储空间并且没有争用以追加模式成功打开的文件时,有没有人知道什么类型的情况会导致打印语句失败?

最佳答案

您可能内存不足 (ENOMEM) 或超过文件大小限制(E2BIG 或 SIGXFSZ)。您可能会遇到老式 I/O 错误 (EIO)。如果脚本同时运行或通过 NFS 访问文件,则可能会出现竞争条件。而且,当然,您可能会在要打印其值的表达式中出错。

我曾经看到的一个奇怪的原因是 CPU 散热器故障会导致 sprintf 虚假故障,导致一些令人惊讶的结果,包括将垃圾写入文件描述符。

最后,我提醒您,print 通常会将其内容写入 I/O 缓冲区。这意味着两件事。 (1) 您还需要检查 close() 的结果。 (2) 如果您打印但没有立即 close() 或 flush() ,那么您的数据可能会被缓冲并且直到很久以后才真正写入(或者如果进程严重死亡,则根本不会写入)。

关于perl - 什么可能导致 perl 打印错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980026/

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