Menubar

jueves, 12 de octubre de 2017

Como mostrar la salida de un programa en C++ desde PHP

Por J. Manuel Mar H. Editar
Compartir en Facebook
Compartir en Twitter
Compartir en MeWe
Enviar a Reddit
Guardar en Internet archive
Guardar en  archive.today
Enviar por email
PHP y C++  Muchas gracias a todos los internautas que están visitando el blog o la fanpage de Facebook de un servidor. Hace poco un visitante me solicitó apoyo con una duda que tenía: como direccionar la salida de un programa en C++ hacia PHP, esperando no se moleste comparto el script esperando con ello también beneficie a otros, pues así como nos han ayudado (en mi caso) pues ayudemos a otros también.

Publicidad


 PHP tiene una función llamada "exec" que permite la ejecución de programas desde el lado del servidor. Su funcionamiento es muy simple, solo hay que llamar la función, pasar como parámetro el programa a ejecutar, PHP lo ejecuta, espera la terminación del mismo (si es el caso) y continúa la rutina PHP, es todo.

 Esto está muy bien si queremos hacer algo que PHP formalmente no hace y necesitamos de terceros para realizar la tarea, el problema es que no veríamos nada en pantalla (salida del programa) porque se encuentra siendo ejecutado en el servidor. La pregunta aquí ahora es: "¿cómo mostrar la salida del programa pero en el lado del cliente?".

 Buscando un ratito me topé con este post de Foros del web (un foro que visito con frecuencia), el cual me dio una pista, he aquí un pequeño programa en C++ que muestra unas líneas en pantalla, lo he llamado print_f y al compilarlo (yo uso Open Watcom) nos produce el archivo print_f.exe:

#include <stdio.h>

void main()
{

  char c;
  
  printf("<H1>Ejecutar archivos C desde php</H1>\n");
  printf("Otra linea desde printf\n");
  printf("Otra linea mas...\n");
  
}

 Como podemos ver este programa muestra tres líneas en pantalla. Si lo ejecútaramos desde PHP mediante la función exec directamente solo veríamos una pantalla blanca como salida, ¿porqué?, porque la salida es en el servidor, no en el lado del cliente.

Esta es la rutina básica de exec:

<? exec("print_f.exe"); ?>

Ahora reemplazamos ese código por lo siguiente:

<? 

 $array = array();
 exec("print_f.exe", $array);

 print_r($array);

?>

Al ejecutar el script PHP esto es lo que se muestra en la pantalla:
Salida del programa










 Como pueden ver, la salida del programa quedó almacenada en el arreglo de nombre "$array" y mediante la función print_r podemos mostrarla ahora en nuestra pantalla. Así entonces ya no se pierde la salida del programa, sinó que el visitante la puede visualizar.

Ahora veamos como podemos manejar los elementos de ese arreglo:

<?

 $array = array();
 exec("print_f.exe", $array);

 for($i=0; $i < count($array); $i++)
   echo $array[$i]."<br>";

?>

Al ejecutar el script PHP esto es lo que se muestra en la pantalla:
Salida del programa










 Es posible recorrer los elementos de ese arreglo mediante un ciclo For (o el que gusten) e ir obteniendo los datos de la salida para darle el uso que gustemos.

Conclusiones:

  Mediante la función exec de PHP y pasando como segundo parámetro un arreglo, es posible entonces capturar la salida de un programa para poder mostrarlo en pantalla.

Procedencia de las imágenes:
File: Chica con dinero 
URL: http://www.freewebmentor.com/
Licencia: Creative Commons

¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.



Licencia de Creative Commons Esta obra está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional, haga clic aquí para conocer más detalles.


Compartir:



Directorio de blogs, ¡agrega el tuyo!
Programas para el mantenimiento de Windows
Blog de seguridad informatica