La Web del Programador: Comunidad de Programadores
 
    Pregunta:  35162 - REDIRECCIONAR LA SALIDA EN EXECLP
Autor:  edu edu
Hola,
En una maquina solaris (con shell sh) he escrito un script que ejecuta un proceso hijo a traves de \"execlp\" pasandole los parametros correspondientes. Me gustaría que la salida de la ejecución de este programa fuese a un archivo situado en otro directorio actual y en background, pero la salida me sale en la misma consola, sin hacerlo en background y sin agregar informacion al fichero. ¿ Por qué?.

La sentencia que ejecuto es la siguiente :

if(pid == 0) {
execlp( \"java\",\"java\",\"clase1\",\">../directorio/fichero.log\",\"&\",\"0 );
}
Gracias.

  Respuesta:  A Zeta
Hola, diría que lo que hace esa línea es pasarle a tu programa "java" las cadenas de char:
"clase1"
">../directorio/fichero.log"
"&"
y
"0"
como parámetros;
cuando en realidad lo que quieres es pasarle al shell:

java clase1 >../directorio/fichero.log &

para lo que deberías usar la llamada system y no execlp:
system("java clase1>../directorio/fichero.log &")
Si quieres usar execlp, lo que puedes probar es:
execlp ( "sh", "sh", "-c", "java clase1 >../directorio/fichero.log &", 0 )

O sinó:

execlp("java", "java", "clase1","../directorio/fichero.log",0)

y luego en la función java:
nom_fich_destino=argv[2]; //supongo que la entrada está en clase1
nom_fich_origen=argv[1]; //y que la salida va en fichero.log
después habría que abrir fichero.log y escribir el resultado en fichero.log en lugar de por pantalla

Ta lueg!