c如何在Java中通过socket获取错误流?
我目前正在写一些东西来解决这个Java错误:
http://bugs.sun.com/view_bug.do?bug_id=5049299
基本上,我有一个轻量级的C服务器,它与Java服务器运行在同一台机器上。我正在向C服务器添加一个特性,当我可以通过socket请求它分叉/运行一个新进程并传回stdin/stdout/stderr时。在Java方面,我创建了一些类似于ProcessBuilder
和Runtime.exec()
行为的东西,但是通过socket
问题出现在stderr
上。Javasocket没有错误流,所以对于如何恢复它,我有点不知所措。我提出了两种可能的解决方案:
- 创建第二个socket(可能是 从C服务器回到Java服务器 服务器)我刚才在哪里发送stderr 回来李>
- 交错输出 使用 处理,然后在 Java返回到不同的流中
这两种解决方案都有固有的问题,所以我很乐意听取任何人的反馈
奖励:给我一个简单、有保证的Java bug解决方案,它不需要我做任何这些,我将永远是你最好的朋友
# 1 楼答案
为了解决这个问题,我利用了两台服务器在同一台机器上运行的事实。我只是将stderr写入另一台服务器读取的文件中。这不是世界上最优雅的解决方案,但非常简单,而且有效