此处[ 1 ] [ 2 ] [ 3 ]的大多数答案使用单个尖括号重定向到/ dev / null,如下所示:
command > /dev/null
但是附加到/ dev / null也可以:
command >> /dev/null
除了多余的字符,是否有其他理由不这样做?这是对/ dev / null的基础实现的“更聪明”吗?
编辑:
在开放式(2)手册页说lseek的是每次写在附加模式文件之前名为:
O_APPEND
以追加模式打开文件。在每次write(2)之前,文件偏移都位于文件的末尾,就像使用lseek(2)一样。文件偏移量的修改和写操作作为单个原子步骤执行。
这使我认为使用可能会对性能造成微小的影响>>
。但另一方面,根据该文档,截断/ dev / null似乎是未定义的操作:
O_TRUNC
如果文件已经存在并且是常规文件,并且访问模式允许写入(即O_RDWR或O_WRONLY),它将被截断为长度0。如果文件是FIFO或终端设备文件,则O_TRUNC标志将被忽略。否则,未指定O_TRUNC的效果。
并且POSIX规范说>
应截断现有文件,但是O_TRUNC是针对设备文件的实现定义的,并且没有关于/ dev / null如何响应被截断的信息。
那么,截断/ dev / null实际上是未指定的吗?并做lseek的来电对写性能产生任何影响?