stderr在哪里进入G-WAN?

时间:2014-05-12 06:33:58

标签: stderr g-wan

例如,如果我有这个ruby脚本,stderr会继续G-WAN

require 'time'
START_TIME = Time.now    
ENV.each do |k,v|
  puts "#{k} => #{v} <br/>"
end   
RUNTIME = Time.now - START_TIME
puts "<br/>%.2f ms" % (RUNTIME*1000.0)
$stderr.puts "Test 123"
exit(200)

当该脚本请求时,Test 123目录或控制台中没有logs/*字符串。

1 个答案:

答案 0 :(得分:1)

  

stderr在G-WAN上的位置?

如果我记得很清楚,stdinstrerrstdout在守护程序模式下关闭,因为无论如何都无法访问G-WAN从其父终端访问它们。

但在“互动”中#39;模式,其中G-WAN仍然显示控制台输出,如编译错误和&#39; gracefull&#39;崩溃报告(servlet崩溃没有崩溃服务器),这些文件描述符保持打开状态。

可以使用作为模块加载的脚本(CC++C#JavaPH7从任何G-WAN轻松检查,Objective-C等,也就是说,当脚本共享G-WAN内存空间时。

但是当使用CGI进程而不是因为脚本运行时没有作为模块(RubyPerl等)加载时,这是不同的,因为G-WAN正在运行外部进程并且管道stdout

在后一种情况下,G-WAN需要另一个管道才能流stderr。这没有完成,这就是为什么在从stderr脚本将输出定向到Ruby时没有看到任何内容的原因。

使用更多的管道将消耗更多的文件描述符,并且在服务器负载下会更快,因此,除非您对此功能的引人注目使用值得与我们共享,否则实现它可能没有多大意义。

最后,所有脚本语言都应该使用G-WAN内存空间中加载的模块,因为这样可以实现更高的性能和并发性。

因此,在G-WAN使用stderrRuby无需额外费用之前,这只是时间问题(以及Ruby社区的帮助)。