$file") or die "file out error!\n"; print OUT $string; 通常,-6ren">
gpt4 book ai didi

Perl 写入文件流导致意外的 SIGPIPE 错误

转载 作者:行者123 更新时间:2023-12-04 05:41:06 25 4
gpt4 key购买 nike

我有以下 perl 代码,它尝试将字符串写入新创建的文件:

open(OUT, ">$file") or die "file out error!\n";
print OUT $string;

通常,此代码工作正常。如果我们对 $file 所在的目录没有写权限,程序就会失败,这是意料之中的。但是,而不是打印“文件输出错误!”作为错误消息,程序只是以退出代码 13(权限被拒绝)退出。
  • 当我们无法写入文件时,为什么open方法会成功?
  • 在这种情况下,我们如何获得适当的错误消息?
  • 最佳答案

    我认为您混淆了程序退出代码及其对标准系统系统错误代码的报告。错误代码 ( errno ) 13 等同于“权限被拒绝”。

    perl -lE '$!=13;say $!'
    Permission denied

    perl -lE '$!=32;say $!'
    Broken pipe

    当然,实际消息可能会因您的操作系统而略有不同。

    就此而言,为打开构建错误消息的更好(IMO)方法是:`open OUT,">","$file"或 die "Can't open $file: $!\n".

    关于Perl 写入文件流导致意外的 SIGPIPE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234100/

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