为了账号安全,请及时绑定邮箱和手机立即绑定

我是否正确关闭了此功能?

我是否正确关闭了此功能?

Go
慕森王 2021-12-20 10:40:49
几个小时后,我不断收到错误消息,因为我打开的文件太多。我已经编辑过了,ulimit -n但这似乎只会延长错误发生和进程崩溃之前的时间。我相信我已经将它缩小到这个功能,我只是不确定我是否正确关闭它。我目前有一个功能go func() {    if _, err := io.Copy(rw, stdout); err != nil {        if !WritePipeBroken.MatchString(err.Error()) &&            !ConnectionResetByPeer.MatchString(err.Error()) {            rollbar.Error(rollbar.ERR, err)        }        log.Printf("pipeThruFfmpegToMp3: %v\n", err)        if err := ffmpeg.Process.Kill(); err != nil {            log.Printf("pipeThruFfmpegToMp3: %v\n", err)        }    }    rw.Flush()    wg.Done()}()我相信它正在挂起,所以我应该这样做go func() {    if _, err := io.Copy(rw, stdout); err != nil {        if !WritePipeBroken.MatchString(err.Error()) &&            !ConnectionResetByPeer.MatchString(err.Error()) {            rollbar.Error(rollbar.ERR, err)        }        log.Printf("pipeThruFfmpegToMp3: %v\n", err)        if err := ffmpeg.Process.Kill(); err != nil {            log.Printf("pipeThruFfmpegToMp3: %v\n", err)        }    }    if ffmpeg.Process != nil {        ffmpeg.Process.Kill()    }    if stdout != nil {        stdin.Close()    }    rw.Flush()    wg.Done()}()
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

使用defer像谷歌建议的声明:


func CopyFile(dstName, srcName string) (written int64, err error) {

    src, err := os.Open(srcName)

    if err != nil {

        return

    }

    defer src.Close()


    dst, err := os.Create(dstName)

    if err != nil {

        return

    }

    defer dst.Close()


    return io.Copy(dst, src)

}


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信