tar 退出代码 123 是否总是意味着空存档?

Does tar exit code 123 always mean empty archive?

[root@my-pc: ]# printf "" | xargs tar czf ./foo.tgz
tar: empty archive
[root@my-pc: ]# echo $?
123
[root@my-pc: ]# 

tar 手册页仅记录 return 代码 012,但进一步解释:

If a subprocess that had been invoked by tar exited with a nonzero exit code, tar itself exits with that code as well. This can happen, for example, if a compression option (e.g. -z) was used and the external compressor program failed. Another example is rmt failure during backup to a remote device.

所以我假设此 return 代码“123”来自某个调用的子进程。

问题:tar 退出代码 123 是否总是意味着空存档? (这段代码是什么子进程 return?)

我试过的:

1) 我唯一能想到的就是 strace 这个,但我没有足够的经验来判断它的输出是否揭示了我问题的答案。

[root@my-pc: ]# printf "" | xargs strace tar czf ./foo.tgz 2>&1 | grep -w 123

以上是 tar 运行 strace 的正确方法吗?无论如何,该命令没有输出。

如果相关,我可以包含上面的输出而没有最后的 grep,但我现在将它排除在外,因为它很长,而且我不清楚它是否一定有用

2) 搜索过,我找到的最接近的命中是 this,但我不确定这是否相关(我不清楚是否涉及 find/xargs在“123”的return代码中

来自man xargs

EXIT STATUS
       xargs exits with the following status:
       0 if it succeeds
       123 if any invocation of the command exited with status 1-125
       124 if the command exited with status 255
       125 if the command is killed by a signal
       126 if the command cannot be run
       127 if the command is not found
       1 if some other error occurred.

因此,来自 tar 任何 非零退出状态将导致 xargs tar 使用状态 123