error-handling - awk 可以跳过不存在的文件,无竞争吗?

标签 error-handling awk race-condition gawk

有没有办法让 awk (gawk) 忽略或跳过丢失的文件?也就是说,在命令行上传递的文件不再存在于文件系统中(例如,在/proc/[1-9]* 下快速出现/消失的文件)。

默认情况下,丢失的文件是一个 fatal error :-(

我希望能够做这样的事情:

BEGIN { MISSING_FILES_ARE_FATAL = 0 }  # <- Wishful thinking!
      { count++ }
END   { print count }

包装脚本无法在运行 awk 之前检查文件是否存在,因为它们可能会在检查它们和 awk 然后尝试打开它们之间消失,即,这是一个竞争条件。 (在awk中check-and-open也是一种竞争条件,虽然时间比较紧)

最佳答案

GAWK 4 有 BEGINFILE您可以在其中测试 ERRNO并做一个 nextfile如果 ERRNO不为空(表示无法打开文件)。

关于error-handling - awk 可以跳过不存在的文件,无竞争吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217213/

相关文章:

c++ - std::chrono::steady_clock::now 如何报告错误?

awk - 计算文本文件中的字符串数量

ajax - XMLHttpRequest 对象重用或新实例

vb.net - 如何处理跨线程操作中的错误

linux - 比赛结束后如何打印所有内容?

正则表达式从文件中删除密码

multithreading - 多个线程在缓冲区 : are there consistent arguments stating that it is dangerous? 上写入相同的数据

fork - 当多个 block 同时添加到区 block 链时会发生什么?

C# Getter-Setter 竞争条件

javascript - 如何根据用户使用jquery输入的内容打开和关闭错误消息