gpt4 book ai didi

ruby - 重新打开STDOUT到/dev/null时指定文件模式有什么意义?

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:33 25 4
gpt4 key购买 nike

我正在阅读一个示例 ruby​​ 脚本,该脚本通过 fork 创建守护进程,创建新 session ,再次 fork ,然后将标准输入、标准输出、标准错误重定向到/dev/null

这是重定向的片段:

STDIN.reopen '/dev/null'
STDOUT.reopen '/dev/null', 'a'
STDERR.reopen '/dev/null', 'a'

在这种情况下指定文件模式 ('a') 有什么意义?行为是否会有所不同,例如,

STDOUT.reopen '/dev/null', 'w'

甚至

STDOUT.reopen '/dev/null'

?

最佳答案

没有特别重要的意义,但对于希望 STDOUT 的读者在语义上很有帮助是appendwrite , 但不是 read .它还可以防止将来更改默认值(通常为 read ),尽管这种情况不太可能发生。事实上,Ruby 可以防止更改 STDIN 的模式。或 STDOUT .

STDOUT.reopen '/dev/null', 'r'

test.rb:1:in `reopen': <STDOUT> can't change access mode from "w" to "r" (ArgumentError)
from test.rb:1:in `<main>'

虽然这确实适用于其他 IO,并且明确说明总是好的。

f = File.open('file.out', 'w')
f.puts 'Hi'
f.close

f.reopen('file.out', 'r')
puts f.read
$ ruby test.rb
Hi

关于ruby - 重新打开STDOUT到/dev/null时指定文件模式有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36489422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com