Come cambiare main

di il
8 risposte

Come cambiare main

Buongiorno a tutti ragazzi, vorrei cominciare chiedendo scusa per il titolo del nuovo argomento ma non sapevo bene cosa scrivere. Comunque veniamo al dunque io ho un main che genera ogni giorno un file "log.txt" dove all'interno di possono trovare i messaggi inviati al terminale e quelli ricevuti dal terminale. Io vorrei aggiungere la possibilità di avere:
- solo messaggi inviati al terminale,
- solo messaggi inviati dal terminale,
- entrambi i messaggi.
Avevo pensato semplicemente ad una variabile "varlog" che può assumere 3 stati( 0 - 1 - 2 ) per determinare il tipo di log da avviare, oppure si potrebbero creare 3 main diversi .Per la seconda idea non ci dovrebbero essere grossi problemi,mentre per la prima il problema è che il main lo avvio da un progetto laravel ( in ambiente linux) tramite il comando

exec ( "percorso/main 2>&1" , $output, $return); 
Quale sarebbe la soluzione migliore? Come sempre grazie in anticipo ^_^ a presto !

8 Risposte

  • Re: Come cambiare main

    Veramente non si capisce cosa fa questo main... posta il codice
  • Re: Come cambiare main

    
    
    /* Variabili */
        tm *structData;
        char *data;
        /* Prendi la data odierna*/
        structData = GetStruttura();
        data = getTitoloLog(structData);
        /* Creazione file di log */
        freopen(data,"w" , stdout);
        std::cerr<<"File di log generato correttamente"<<std::endl;
        std::cout<<"Log File automatically generated everyday"<<std::endl;
        std::cout<<"\n \r ----"<<data<<"---- \n \r"<<std::endl;
    
        /*namespace*/
        using namespace std::placeholders;
        while(1)
        {   
            /* Buffer */
            char buf [300]={0};
            /*Lettura da seriale */
            int n = read (fd, buf, sizeof buf);  
            /* Controllo data */
            checkData();
            if(n >0)
            {
                time_t currentTime;
                std::string strdata=asctime(localtime(&currentTime));
                std::cout<<"Date: "<<strdata<<"Message received is: "<<buf<<" \n \r"<<std::endl;
    
      
            }
             if(buf.find("REQ"))
                {
                 std::cout<<" Messaggio di richiesta " \n \r"<<std::endl;
                }
                else
                {
                      std::cout<<" Messaggio di comando " \n \r"<<std::endl;
                }
        }
        
        fclose (stdout);
        return 0;
    
    Vorrei aggiungere la possibilità di scegliere quali messaggi memorizzare nel file log : esempio solo i messaggi nel blocco if(buf.find("REQ")) , o viceversa. Non so spiegare meglio di cosi XD
  • Re: Come cambiare main

    La risposta che mi verrebbe naturale è quella di utilizzare un parametro a linea di comando (argc/argv).
  • Re: Come cambiare main

    Ciao,

    Da quello che ho capito vuoi fare in modo che l'utente possa effettuare una scelta da riga di comando all'avvio del programma.
    A questo scopo come diceva candaluar esistono i due parametri del main argc e argv

    in questo modo puoi farti passare dei parametri stringa da riga di comando e effettuare un parse nel main a quel punto scegli cosa far effettuare al programma.
  • Re: Come cambiare main

    La soluzione è proprio quella di passare un argomento

    main 1

    e leggerlo da argv

    Fare più main non ha proprio senso
  • Re: Come cambiare main

    Come sempre ringrazio tutti per i consigli che mi state dando. Davvero un ottimo forum mi sto trovando molto bene. Quindi la mia prima idea quella di passare dei parametri al main era giusta , il problema ora è che non ci ho mai provato, quindi chiedo : dove potrei trovare qualche guida che spiega questo funzionamento? A presto
  • Re: Come cambiare main

    dove potrei trovare qualche guida che spiega questo funzionamento?
    In un qualsiasi testo di C, in questo stesso forum e su google cercando "argc argv".
  • Re: Come cambiare main

    Va benissimo, allora vado a riesumare il mio vecchio libro grazie ancora ragazzi
Devi accedere o registrarti per scrivere nel forum
8 risposte