我是靠谱客的博主 含糊云朵,最近开发中收集的这篇文章主要介绍Win32 service - Errno::EINVAL (Invalid argument)解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mongrel在windows 2003 服务器上以 service的方式运行时,经常会出现Errno::EINVAL (Invalid argument)类错误,一般在post数据的时候特别容易出现. 解决办法有以下几种.


1. 有个比较简单的解决办法,就是把start_form_tag改成form.这样的确很难再出现这个问题.
2. mongrel以console的方式来运行.
3. 重新定向stderr和stdout到某个指定的文件.


下面来说下,为什么会出现这个错误. 仔细观察下这些错误发生时的提示,比如有一个函数在里面 puts函数.
错误发生的更本原因也是这个函数.

这个函数在调用的时候,要拥到stderr,和stdout,但是这两个对象是pipe. 如果是控制台模式下,stderr,和stdout管道是一定存在,并且可以访问到的. 但是win32 services下面,是没有stderr和stdout的.所以调用puts函数必然出错.

各位可以试下,随便写个页面,里面放上puts函数,放到 win32,mongrel service模式下面去运行,就会出现Errno::EINVAL (Invalid argument)错误.

如果要根本上解决这个问题,最好的办法还是重定向 stderr,stdout. 可以在environment.rb中加入
STDOUT.reopen("c:logstdout.log") 日志路径随你们工程环境来修改. stderr的重定向代码也一样.就不多写了.

最后

以上就是含糊云朵为你收集整理的Win32 service - Errno::EINVAL (Invalid argument)解决方法的全部内容,希望文章能够帮你解决Win32 service - Errno::EINVAL (Invalid argument)解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部