目录
本文所述问题实则涉及了在执行Command时一个比较典型的案例。
现象
exec.Command执行一个shell时报该错,其实首次只看到了exit status 2,也就是程序返回的err
的值,但这个没有什么价值,接着发现stderr才看到了有用信息:
stderr: Text file busy
看表面意思是文件忙导致的无法操作。
背景与分析
简单说下问题发生时的背景。
操作1:写文件
操作2:执行shell,shell涉及的文件恰好是操作1中写了的文件
两个操作间隔时间非常短,几乎是零距离,结果是操作2失败,提示Text file busy。
但是有趣的是,经过多次尝试发现,写入完1分多钟后,再执行操作2的时候就正常了,这两分钟内一直是文件忙...
发现此情况实际上80%也猜到了,就是写完后没有及时关闭句柄, 导致还在被进程占用,但实际上程序中却是有close的。。。
来看看怎么回事,上代码&#