Diario de mi Proyecto : PFC sobre Moodle

  Archivos
Jul 07 [2]
Jun 07 [12]
Mayo 07 [13]
Mar 07 [3]
Nov 06 [6]
Oct 06 [5]


Sindicación
Artículos
Comentarios


Enlaces
eGrupos
ZoomBlog

 
Inicio | Mi Perfil | Suscríbete al blog
 

Consola controlada

Enlace permanente 26 de Mayo, 2007, 10:37

Hola!

Ya tengo el problema de lanzar la consola del SO controlada. E incluso he descubierto varias instrucciones muy interesantes. Resulta que era problema de mi ordenador. Cuando se inicia, está ejecutándose ya el servidor httpd de Apache. Solo tengo que pararlo y volver a iniciarlo manualmente.

Por lo tanto instrucciones como exec(cmd.exe /K start program.exe) funcionan perfectamente, lanzándose la consola y visualizando los resultados. El usuario será el encargado de cerrar esta consola.

Ahora mismo estoy trabajando en el proceso de compilación y ejecución de un fichero con PHP. Cuando termine actualizaré este artículo y expondré los resultados.

Bye

ACTUALIZACIÓN

Proceso de compilación y ejecución de programas finalizado y funcionando perfectamente. Código utilizado:

$so = getenv("HTTP_USER_AGENT");
system('gcc d:\misdoc~1\g.c 2>compilar.txt',$valorgcc); //Con esto recojo el valor devuelto por gcc
if(!$valorgcc) {  
       if (preg_match("/win/i",$so)) {
       shell_exec('start D:\AppServ\www\moodle\mod\RemoteRunning\a.exe');
       }
      else {
      shell_ex a.exe');
 unset($result);

      $result = 'ENHORABUENA'.'<BR>'.'Su programa ha sido ejecutado satisfactoriamente.';
}

 else {
     REMOTERUNNING_read_compilation($result);
}


Como el módulo tiene que funcionar tanto en Windows como en Unix, en la variable $so almaceno el SO en el que me encuentro. Lanzo la compilación del fichero con gcc y devuelvo el valor en $valorgcc. Si el proceso finaliza correctamente ($valorgcc = 0) ejecuto el fichero a.exe desde una consola. Si en la compilación hay errores ejecutaré la función REMOTERUNNING_read_compilation(), creada en lib.php, que se encargará de leer las líneas del fichero compilar.txt con los errores de compilación, para posteriormente mostrarlos en una consola del módulo.

El código de la función REMOTERUNNING_read_compilation(&$read) es el siguiente:

function REMOTERUNNING_read_compilation(&$read) {
   
    $chain = array();
    $i = 0;
    $fp=fopen(FILE_COMPILATION,'r');
    while(!feof($fp)) {
        $chain[$i] = fgets($fp);
        $i++;
        $chain[$i] = "<BR>";
        $i++;
    }
    $read=implode("",$chain);
    fclose($fp);
}  

El código de ejecución de unix contiene errores que corregiré más adelante, para lanzar el programa creado desde unix no será con 'bash a.exe'. Todavía tengo que investigar esto. Cuando finalice el proyecto para Windows lo modificaré para que funcione perfectamente para Unix.

Bye
Comentarios 2 ~ Comentar | Referencias (0)



Blog alojado en ZoomBlog.com

 

 

<<   Mayo 2007  >>
LMMiJVSD
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31    

Categorías
General [41] Sindicar categoría