在 REBOL2 中输出到标准错误?

Posted

技术标签:

【中文标题】在 REBOL2 中输出到标准错误?【英文标题】:Output to stderr in REBOL2? 【发布时间】:2015-03-10 22:05:09 【问题描述】:

我正在尝试让我的 CGI 脚本在我的网络主机(在 FreeBSD 上运行)上运行。为了调试为什么我不断收到可怕的“脚本头过早结束”错误,他们的支持建议我将所有输出重定向到 stderr,而不是 printing 它。查找如何做到这一点,我遇到了一个非常古老的RAMBO ticket,但看起来它从未实现过。

根据this question 的一些答案,似乎我应该能够通过call echo Hello, world >&2 来实现这一点,但它不起作用。

如何在 REBOL2 中写入 stderr?

【问题讨论】:

调试 CGI 问题的另一个方法是在 REBOL [...] 标头之后添加一个 prin ["Content-type: text/plain" crlf crlf] 作为第一件事。 不幸的是,即使只是一个带有 shebang 行、REBOL 标头的脚本,仍然会给我错误。 你能显示那个最小 CGI 脚本的源代码吗? 我已经上传了here。 【参考方案1】:

对于我的 CGI 特定场景,我有一个非常糟糕的解决方法。由于在 Perl 中写入 stderr(我完全不熟悉)是单行的,因此我目前正在从 Perl 调用 REBOL 脚本并将其输出从那里打印到 stderr:

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI; 

# Note the backticks 
my $the_string = `/home/public/rebol -csw test-reb.cgi`; 

print STDERR $the_string; 

【讨论】:

【参考方案2】:

这个网页有一些建议http://www.liquidweb.com/kb/apache-error-premature-end-of-script-headers/ 解决您的实际问题。也许您没有将标题打印为脚本中的第一件事,这必须是第一件事。可能权限不够,或者 .r 文件类型未正确添加到您的 .htaccess 中作为 cgi 文件。您的(正确的!)rebol core exe 没有正确的权限。还是您的脚本陷入无限循环?

【讨论】:

【参考方案3】:

为 Rebol cgi 脚本重定向错误的一些提示: http://www.rebol.com/docs/core23/rebolcore-2.html#section-6.2

【讨论】:

【参考方案4】:

迟到总比没有好...我刚刚在我的 Rebol 分支中为 Rebol3 实现了它。

https://github.com/Oldes/Rebol-issues/issues/2468

语法可能会稍微改变一下,因为我不喜欢系统控制台端口被命名为input,尽管它不仅仅是用于输入。

目前为止:

print 1 ;<- std_out
modify system/ports/input 'error on
print 2 ;<- std_err
modify system/ports/input 'error off
print 3 ;<- std_out

【讨论】:

以上是关于在 REBOL2 中输出到标准错误?的主要内容,如果未能解决你的问题,请参考以下文章

怎样去掉提示:nohup:重定向标准错误到标准输出

在 C shell 中将标准错误重定向到标准输出

LINUX 标准错误输出重定向

shell脚本中如何输出标准错误和标准输出

linux将标准输出和标准错误输出都重定向到一个文件?

nohup: 重定向标准错误到标准输出问题解决方法