[英]Java process on Mac OSX seems to “hang” when invoked via webserver, but OK from the commandline
我有一个非常奇怪的情况,当通过Apache / PHP调用时,Java进程似乎挂起,但是从命令行调用时可以正常。 我花了几个小时调试这个,没有用。 欢迎任何和所有的想法!
情况:我有一个.class文件(没有原始Java代码),它读取输入文件,处理读取信息,并在stdout上写入报告。 Java代码不读取stdin,只写stdout。 我把它包装在一个很小的Perl脚本中,基本上只执行“java -cp / path / to / classfile MyJavaProgram / path / to / inputfile / to / process”。 这样我就可以从命令行调用它进行测试,这就像一个魅力。 接下来,我尝试使用popen()从PHP调用它,并且Java只是挂起。 我在ps列表中看到了Perl进程和Java; 但Java进程永远等待。 一旦我杀了它,webserver页面就会继续加载(但当然没有Java进程会产生的预期输出)。
到目前为止我尝试了什么:
不幸的是,我不能用我控制的东西替换Java代码。 我只有.class文件可以使用。 我还没有尝试过在Linux下运行它,所以这仍然可能是OSX特定的问题(这会让我感到惊讶)。
这到底是怎么回事? 任何和所有“狂野”的想法都赞赏...谢谢!
从apache和cmd行检查所有环境,包括路径,UID等。
还要检查挂起时java进程执行的操作(使用truss / tusc / strace -f java xxxxxxxxxxx 2> / tmp / trace。$$)从两个位置(apache和cmdline)包装它,然后比较结果。
另外,当从perl包装时,在执行java之前将stofout,stdout,stderr的autoflush设置为1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.