Я сейчас пишу что-нибудь, чтобы обойти эту ошибку 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
обратно.
- Чередовать вывод
процесса с stderr из
обработать, а затем разобрать их в
Java возвращается в отдельные потоки
Оба решения имеют присущие проблемы, поэтому я хотел бы услышать любые отзывы.
БОНУС: Дайте мне простое, гарантированное решение ошибки Java, которая не требует от меня выполнения каких-либо действий, и я навсегда останусь вашим лучшим другом.