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! |