Para ejecutar el programa compilado (por ejemplo, a.out
, o cualquier nombre que le pase al compilador), puede estar usando funciones PHP como exec()
, popen()
etc. El script PHP puede obtener la salida (del flujo STDOUT) generado por el comando ejecutado (aquí, el programa). Si usa exec()
, tiene un argumento para este propósito. Si usa popen()
, puede leer desde el puntero de archivo devuelto. (Mire los ejemplos en la documentación PHP de estas funciones).
Si el programa que se va a ejecutar escribe mensajes de error en la secuencia STDERR, no podrá obtenerlo utilizando los enfoques anteriores. Luego, tiene dos opciones: una es simplemente confiar en la redirección de E / S de estilo UNIX y simplemente agregar 2>&1
al comando que se ejecutará; por ejemplo, use ./a.out 2>&1
. Esto canalizará la salida en la secuencia STDERR a STDOUT. Para obtener más información, consulte: http://tldp.org/HOWTO/Bash-Prog-…
Otra forma es utilizar la función proc_open()
más potente, donde puede pasar las secuencias (archivos, tuberías, etc.) a las que desea redirigir STDIN, STDOUT y STDERR según sea necesario. Nuevamente, vea los ejemplos dados en la documentación de PHP.
Y, lo que realmente lo morderá es que, si prueba este programa en un servidor de alojamiento web simple (incluso uno pagado), enfrentará problemas como que el compilador GCC no es accesible, etc. Para usar esto en la realidad mundo, necesitará un VPS o un servidor dedicado, donde puede obtener acceso de root al shell y hacerse cargo de estas cosas. Por supuesto, puede usarlo como desee en sus propios sistemas personales, sistemas universitarios donde puede obtener el acceso necesario, etc.
- Si estudié lingüística como parte de un título de Artes en la universidad, ¿qué oportunidades profesionales hay para mí?
- ¿Por qué chupo en las batallas competitivas de Pokémon?
- Si mis impuestos me ayudan a bombardear a los niños del otro lado del mundo, ¿soy cómplice del mal?
- Tengo 17 años, ¿cómo puedo comenzar a prepararme para MMA si sueño pelear en UFC? (Yo vivo en India)
- Soy un estudiante de maestría haciendo maestría en robótica. ¿Necesito una computadora portátil de alto rendimiento para robótica?
Confía en mí, anteriormente había hecho este tipo de aplicación en PHP, y enfrenté el mismo problema. Terminé haciendo que el servidor enviara los programas para compilarlos a un conjunto de máquinas locales (cuyas direcciones IP no eran realmente estáticas, y tenían que configurarse cada vez en la aplicación del servidor), y después de compilarlas y ejecutarlas localmente, finalmente enviando El resultado al servidor. (Incluí un HMAC con el resultado para evitar falsificaciones simples).