Llamada a Perl desde Java
Hola a tod@s:
Estoy desarrollando un prorama en Java bajo Linux y en un momento dado necesito llamar a un binario externo que recibe varios parámetros. Despues de dar unas cuantas vueltas por la API encontre la clase Runtime y el trozo de código que ejecuta esto (omito try-catch) es:
String exe = "/home/jose/doit file1.wav file2.wav";
Runtime.getRuntime().exec(exe)
El problema es que no ejecuta nada ni devuelve una exception. Pero un cusiosidad es que si:
String exe = "touch file.foo"
Si funciona! Con lo cual he tenido que hacer un script el Perl que reciba el String exe y ejecute dicho String.
No es un problema de permisos por que en un momento de desesperacion puse todos a 777 (binarios y directorios). Tampoco es un problema del contenido de la linea de comandos por que si desde el shell ejecuto yo mismo el contenido de "exe" si que funciona.
El ejecutable al que llamo (doit) tarda un tiempo en ejecutarse (unos 30 segundos) y en el caso de llamar a perl desde Java, devuelve en seguida el control a Java aunque se queda el proceso "doit" funcionando sin problemas.
Dudas:
- Quizas debo esperar a que acabe el proceso o Runtime.getRuntime().exec(exe) no es la forma apropiada?
- A caso al ser touch un comando si se permite?
- Por qué con Perl si me deja y llamando directamente al ejecutable no?
Llevo mucho tiempo dandole vueltas al asunto y no consigo solucionar ninguna de las dudas y estoy un poco desesperado. EstarÃa muy agradecido si alguien me pudiese resolver alguna de ellas....
Muchisimas gracias. De verdad.
Jose Pedro
Estoy desarrollando un prorama en Java bajo Linux y en un momento dado necesito llamar a un binario externo que recibe varios parámetros. Despues de dar unas cuantas vueltas por la API encontre la clase Runtime y el trozo de código que ejecuta esto (omito try-catch) es:
String exe = "/home/jose/doit file1.wav file2.wav";
Runtime.getRuntime().exec(exe)
El problema es que no ejecuta nada ni devuelve una exception. Pero un cusiosidad es que si:
String exe = "touch file.foo"
Si funciona! Con lo cual he tenido que hacer un script el Perl que reciba el String exe y ejecute dicho String.
No es un problema de permisos por que en un momento de desesperacion puse todos a 777 (binarios y directorios). Tampoco es un problema del contenido de la linea de comandos por que si desde el shell ejecuto yo mismo el contenido de "exe" si que funciona.
El ejecutable al que llamo (doit) tarda un tiempo en ejecutarse (unos 30 segundos) y en el caso de llamar a perl desde Java, devuelve en seguida el control a Java aunque se queda el proceso "doit" funcionando sin problemas.
Dudas:
- Quizas debo esperar a que acabe el proceso o Runtime.getRuntime().exec(exe) no es la forma apropiada?
- A caso al ser touch un comando si se permite?
- Por qué con Perl si me deja y llamando directamente al ejecutable no?
Llevo mucho tiempo dandole vueltas al asunto y no consigo solucionar ninguna de las dudas y estoy un poco desesperado. EstarÃa muy agradecido si alguien me pudiese resolver alguna de ellas....
Muchisimas gracias. De verdad.
Jose Pedro