В настоящее время я пишу что-то, чтобы обойти эту ошибку Java:Как я могу получить поток ошибок через сокет в Java?
http://bugs.sun.com/view_bug.do?bug_id=5049299
В принципе, у меня есть легкий сервер веса C, который работает на той же машине, что и сервер Java. Я добавляю функцию на сервер C, когда я могу попросить ее развить/запустить новый процесс через сокет и передать обратно stdin/stdout/stderr. На стороне Java я создал что-то, что имитирует поведение ProcessBuilder
и Runtime.exec()
, но над сокетом.
Проблема возникает с stderr
. Сокеты Java не имеют потока ошибок, поэтому я немного теряю, как вернуть его обратно. Я придумал два возможных решений:
- Создайте второй разъем (вероятно, с сервера C обратно на сервер Java ) где я просто отправить STDERR назад закончилась.
- Interleave выхода процесса с STDERR в процессе, а затем разобрать их друг от друга в Java-обратно в отдельные потоки
Оба решения имеют внутренние проблемы, поэтому я хотел бы услышать какие-либо отзывы кто угодно.
BONUS: Дайте мне легкое, гарантированное решение проблемы с ошибкой Java, которая не предполагает, что я сделаю что-либо из этого, и я буду вашим лучшим другом навсегда.