Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/01/2009, 06:10
jtlopez
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Ejecución de comando del sistema lenta

Hola,

tengo la siguiente función escrita en C++
Código:
bool fax::sendFaxSmb()
{
        syslog(LOG_NOTICE, "delivered...",);
        string cmd = "/usr/local/sbin/smb ";
        cmd += Name;
        cmd += " ";
        cmd += Number;
        cmd += " ";
        cmd += Destination;
        syslog(LOG_NOTICE, "Vamos a ejecutar");
        if (!system(cmd.c_str()))
                return true;
        else
        {
                syslog(LOG_NOTICE, "Fallo");
                return false;
        }
}
El problema que tengo es que en ciertas ocasiones sin explicación alguna el código llega a la línea "Vamos a ejecutar", pero después de ahí tarda mucho en ejecutar el programa.
El programa es un script en perl que también envía mensajes a syslog, por lo que se si se está a ejecutar o no.

¿Por qué motivo puede quedarse pillado en dicha línea? La ejecución es correcta y los parámetros pasados también.

¿Alguna otra forma de ejecutar comandos del sistema? ¿Qué diferencias hay entre system, exec, execv? Necesito obtener el código devuelto por el script, para saber si éste terminó bien o no.

Muchas gracias por la ayuda.

Un saludo.