草庐IT

curlopt_stderr

全部标签

ruby - 在 ruby​​ 中生成一个进程,捕获 stdout,stderr,获取退出状态

我想从ruby​​rake脚本运行一个可执行文件,比如foo.exe我希望将foo.exe的STDOUT和STDERR输出直接写入我正在运行rake任务的控制台.当进程完成时,我想将退出代码捕获到一个变量中。我如何实现这一目标?我一直在玩backticks、process.spawn、system但我无法获得我想要的所有行为,只有部分更新:我在Windows上,在标准命令提示符下,而不是cygwin 最佳答案 system获取您想要的STDOUT行为。它还返回true作为零退出代码,这可能很有用。$?填充了有关最后一次system调

ruby-on-rails - Ruby 从 bash 脚本执行中捕获 stderr 输出

我目前可以将stdout重定向到ruby​​/rails中的字符串变量,只需在bash中运行命令并将结果设置为我的字符串变量,如下所示。val=%x[#{cmd}]其中cmd是表示bash命令的字符串。但是,这仅捕获stdout,因为我想捕获stderr并将其设置为ruby​​中的字符串——有什么想法吗? 最佳答案 简单地重定向它:val=%x[#{cmd}2>&1]如果您只想从stderr捕获输出,请在将其复制到fd2后关闭stdout的文件描述符。val=%x[#{cmd}2>&1>/dev/null]

ruby - 为什么在重定向时,Ruby 的 STDERR 输出先于 STDOUT 输出?

在bash中,这给出了预期顺序的输出:ruby-e"puts'one';raise'two'"one-e:1:in`':two(RuntimeError)但是如果我将STDERR重定向到STDOUT,我会在输出之前收到错误,这是我不想要的:ruby-e"puts'one';raise'two'"2>&1|cat-e:1:in`':two(RuntimeError)one我想将输出重定向到一个文本文件(它的行为方式与上面的cat相同)并获得输出和异常,但顺序与查看我的输出时的顺序相同终端。这能实现吗? 最佳答案 发生这种情况是因为行缓

ruby - 将 stderr 重定向到 Logger 实例

我有一个Logger实例:require'logger'logger=Logger.new('foo.log','weekly')我也想将运行时错误(stderr输出)重定向到日志中。我找到了thisforumthread其中有建议:new_fd=logger.get_logger_file_descriptor$stderr.reopennew_fd但是,Logger没有实例方法get_logger_file_descriptor,我也找不到任何公开的获取日志设备或文件访问权限的方法。如何让所有$stderr输出进入日志? 最佳答案

ruby - 何时在 Ruby 中使用 $stderr 与 STDERR?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Ruby$stdoutvs.STDOUTSTDERR通常比使用$stderr更受青睐,还是相反?那么STDOUT与$stdout又如何呢?

ruby - STDERR.puts 与 Ruby 中的 puts 有何不同?

我正在从ProgrammingRuby1.9学习这门语言,他们将STDERR.puts扔进了本书开头的代码块中,但没有解释他们为什么使用它或它与puts有何不同。我用谷歌搜索和维基搜索了这个术语,但我从我的研究中所能收集到的只是它与诊断有关。ProgrammingRuby提供的代码中似乎没有指向错误异常处理的链接。这是代码。require_relative'csv_reader'reader=CsvReader.newARGV.eachdo|csv_file_name|STDERR.puts"Processing#{csv_file_name}"reader.read_in_csv_d

ruby - 如何将 stderr 和 stdout 重定向到 Ruby 脚本文件?

如何将stderr和stdout重定向到Ruby脚本文件? 最佳答案 在Ruby脚本中,您可以使用IO#reopen重定向stdout和stderr方法。#a.rb$stdout.reopen("out.txt","w")$stderr.reopen("err.txt","w")puts'normaloutput'warn'somethingtostderr'$lsa.rb$rubya.rb$lsa.rberr.txtout.txt$caterr.txtsomethingtostderr$catout.txtnormaloutput

ruby - 如何在 Ruby 中临时重定向 stderr?

我想在一个block的持续时间内在Ruby脚本中临时重定向stderr,确保在block结束时将其重置为其原始值。我在ruby​​文档中找不到如何执行此操作。 最佳答案 在Ruby中,$stderr指的是当前作为标准错误的输出流,而STDERR是默认标准错误流。将不同的输出流临时分配给$stderr很容易。require"stringio"defcapture_stderr#TheoutputstreammustbeanIO-likeobject.Inthiscasewecaptureitin#anin-memoryIOobject

javascript - 'forever' 日志文件是否同时包含 STDOUT 和 STDERR 内容?

我正在通过forever运行一个进程,但是我对-l、-o和-e选项的用法感到困惑。来自文档:-lLOGFILELogstheforeveroutputtoLOGFILE-oOUTFILELogsstdoutfromchildscripttoOUTFILE-eERRFILELogsstderrfromchildscripttoERRFILE有人可以确认LOGFILE(-l)的输出是否包含stdout和stderr,以及永远的消息(例如“retartingforever”)。如果是这样,我是否正确地假设-o和-e仅在您想将stdout/stderr发送到不同位置时才存在?如果您想要一个日志

go - 为什么 go 程序将输出打印到终端屏幕而不是/dev/stderr?

在golang源码中看到go会将输出打印到os.StderrStderr=NewFile(uintptr(syscall.Stderr),"/dev/stderr")那么为什么我在终端中使用命令gorunmain.go运行这个程序输出打印到终端屏幕,而不是/dev/stderr//main.gofuncmain(){log.Println("thisismyfirstlog")} 最佳答案 在标准的Unix/Linux终端中,stdout和stderr都连接到终端,因此输出到那里。这里有一个shell片段来阐明这一点:$echo"j