Luego de buscar en Google, perldoc y aquí mismo, aún no he podido resolver todas mis dudas, así que espero me puedan ayudar
Sucede que estoy trabajando en un proyecto el cual actualmente "corre" bajo Linux. Mi intención es que sea multiplataforma, aunque aún existen un par de líneas de código que me impiden aquello.
Using perl Syntax Highlighting
system("cd $dir_temporal;./$ejecutable < $fichero_entrada > $fichero_salida");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
system("ps -eo pid | grep $ejecutable");
`kill -9 $ppid` if (-e '/proc/'.$ppid.'/status');
`kill -9 $ppid` if (-e '/proc/'.$ppid.'/status');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Para aclarar un poco, el directorio donde se ejecutan los binarios no es el mismo donde está el programa. Además, el ejecutable lee los datos de un fichero de entrada y genera un fichero de salida. Cabe señalar que los ejecutables son enviados por los usuarios, por eso utilizo kill para asegurarme que no hayan quedado como zombies.
Con respecto a los comandos anteriores, he encontrado alternativa a cd (chdir) y kill (kill). Aun así con éste último no logro solucionar el tema de saber el pid del programa ejecutado.
Siguiendo con los comandos:
Using perl Syntax Highlighting
my $diff = `diff $salida_original $salida_generada`;
if($diff) ....
if($diff) ....
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
He buscado en CPAN algún módulo que cumpla exactamente la misma función que el comando diff de Linux pero no lo he encontrado, o quizás he buscado mal. Nunca está demás crear una subrutina que abra los dos ficheros y los compare línea a línea, pero preferiría saber si ya existe algún módulo.
Por último, agradecería si alguien pudiera explicarme un poco acerca de las señales en Perl, más específicamente de aquellas que son enviadas para matar al proceso. Por ejemplo cuando un programa termina su ejecución abruptamente (digamos Ctrl+C) la ejecución del bloque de código END {} no se realiza. ¿Se puede realizar esto manejando las señales?
De antemano gracias.
¡Saludos!