Estoy interesado si alguien tiene una idea sobre cómo ejecutar los comandos UNIX sin utilizar tiempo de ejecución o ProcessBuilder en una aplicación javaAlternativas a tiempo de ejecución y ProcessBuilder (Java)
Respuesta
Bien puede utilizar DefaultExecutor de Apache Commons Exec biblioteca para ejecutar comandos, pero internamente usa java.lang.Runtime
y java.lang.Process
.
Le sugiero que utilice esta biblioteca en tiempo de ejecución porque las API de ejecución de comandos de Apache son más sofisticadas y ofrecen todas y más características que Java Runtime. También maneja los valores de salida.
¿Maneja el problema de bloqueo como se detalla en este comentario - http://stackoverflow.com/a/5483880/537503? –
Hay varias maneras posibles; pero no puedo llamar a ninguno de ellos deseable sin entender tu motivación.
Por ejemplo, escriba un programa en C o Perl o en cualquier idioma y escúchelo en un socket. Su programa Java puede conectarse al socket y enviar un mensaje con el nombre del programa para generar, argumentos, etc. El programa del receptor puede continuar y generar esto.
bien, así que la idea es crear una aplicación de servidor Java que responda a comandos básicos como ls, pwd, cd, etc. – tosi
Hay dos formas de ejecutar los comandos Unix:
- Puede utilizar
java.lang.Runtime
yjava.lang.Process
- Puede usar JNI/JNA acceder a bibliotecas compartidas. Por lo tanto, podría usar esto para acceder a los comandos de nivel del sistema operativo para crear un proceso (
system()
yexec*()
en Unix).
No se recomienda el segundo enfoque: Es difícil hacerlo bien y, finalmente, el resultado final será con algo que tiene exactamente la misma funcionalidad que Runtime.exec()
Si sólo necesita la funcionalidad, a continuación, puedes implementar los comandos nuevamente en Java. Por ejemplo, para implementar ls
, use File.listFiles()
- 1. ejecutando scripts a través de processbuilder
- 2. salida de tubería de ProcessBuilder a otro ProcessBuilder
- 3. java: ProcessBuilder hace una memoria de cerdo
- 4. Java EE 6 y alternativas
- 5. compilador de clases java y compilación en tiempo de ejecución
- 6. Alternativas a Java en Android
- 7. Java: Extendiendo clase en tiempo de ejecución
- 8. Alternativas GUI de Java
- 9. Generar, compilar y usar código Java en tiempo de ejecución?
- 10. Java ProcessBuilder: El proceso resultante se bloquea
- 11. Tiempo de ejecución de CPU en Java
- 12. Agregar archivos a Java classpath en el tiempo de ejecución
- 13. Alternativas a JasperReports y BIRT
- 14. Alternativas a YepNope y LabJS
- 15. Alternativas a la API de Java Mail
- 16. Alternativas a dlsym() y dlopen() en C++
- 17. Alternativas a métodos estáticos en Java
- 18. Alternativas a Autoconf y Autotools?
- 19. ProcessBuilder vs Runtime.exec()
- 20. Llamar a un método denominado "cadena" en el tiempo de ejecución en Java y C
- 21. ¿Qué son alternativas a Java VM?
- 22. Inicie CMD utilizando ProcessBuilder
- 23. Diferencia entre Complejidad de tiempo y Tiempo de ejecución
- 24. Combina dinámicamente reglas de Boost.Spirit.Qi en tiempo de ejecución (número arbitrario de alternativas)
- 25. aplicación Java Servidores alternativas
- 26. Paquete R y tiempo de ejecución
- 27. Common Lisp Tiempo de compilación y ejecución
- 28. Java - alternativas JDBC
- 29. Uso de Java ProcessBuilder para ejecutar un comando Hilo
- 30. Alternativas de Java MIDI Sequencer
¿podría explicar por qué? – AlexR
Requisito de tarea – tosi