Interazione php c

di il
6 risposte

Interazione php c

Ciao a tutti,
come da titolo, vorrei sapere se esiste un modo per richiamare un programma scritto in c da php.
Mi spiego meglio, all'interno della mia applicazione, quando clicco su un pulsante, voglio far partire un programma exe scritto in c che mi esegue un determinato task e poi rida il controllo all'app.
Grazie in anticipo per le risposte.

6 Risposte

  • Re: Interazione php c

    http://php.net/manual/en/function.exec.ph
  • Re: Interazione php c

    Ok, grazie, ma c'é un problema: riesco a eseguire il programma c da php, ma il programma c dovrebbe aprire e leggere un file, quando lo eseguo da ide o quando lo eseguo cliccando sull'eseguibile
    va senza problemi, invece quando lo eseguo da php, non apre il file e mi restituisce sempre 'file non aperto'. Se invece al programma c faccio fare altro che non sia interagire con i files, funziona perfettamente anche quando lo lancio tramite php. Quale potrebbe essere una possibile soluzione?
    Grazie
  • Re: Interazione php c

    Potrebbe essere semplicemente che non trova il file perchè quando esegui da PHP lavora con un diverso path corrente. All'interno dell'exe come determini il nome del file da processare? Glielo passi da linea di comando? Usi il path completo o dai solo il nome del file supponendo che sia nel path corrente? L'exe lo puoi modificare per aggiungere ulteriori informazioni oltre a "file non aperto", ad esempio per aggiungere un controllo sull'esistenza del file?
  • Re: Interazione php c

    Premessa: utilizzo dev cpp come ide. Il nome del file é all'interno della riga di codie, e dfinisco solo il nome del file, perché lo stesso e all'interno della cartella Dev-Cpp. Nel sorgente faccio un controllo sull'esistenza del file, se non lo trova, esce dall'esecuzione e scrive file non trovato. Di seguito posto il codice del programma c.
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
        int x=1;
        int y=2;
        int somma;
        int i;
        char line[100];
        char line_out[100];
    	FILE *fp;
        
        fp=fopen("file.txt","r");
    //    
     //   tenta di aprire in lettura nome_file.txt
        if (fp==NULL) {
    	    printf("File non trovato");
          //  printf("ok");
          exit(1);
        }
    
      //  while (!feof(fp)){
     //prelevo la riga dal file
        fgets(line, sizeof(line), fp);    
    //	printf("%s", line); //stampo
    	fgets(line_out, sizeof(line_out), fp);    
    //	printf("%s", line_out); //stampo
    		
     //   }
        
    	fclose (fp);
    
    	sscanf(line_out, "%d", &x); 
    	sscanf(line, "%d", &y); 
    			 /* apre il file in scrittura */
    
      
      
    	somma = x+y;	
        printf("\n%d", somma); 	
      
    
              
      system("pause");	
      return 0;
    }
  • Re: Interazione php c

        fp=fopen("file.txt","r");
    //   
    //   tenta di aprire in lettura nome_file.txt
        if (fp==NULL) {
           printf("File non trovato");
    se scrivi così, senza path, il file deve essere presente nel percorso di esecuzione e molto probabilmente da PHP ti troverai con un percorso diverso da quando lo lanci da dev cpp.
    Quindi prima di tutto, per capire il problema, imposta un percorso fisso e, dopo averci copiato il file in tale posizione, riprova:
        fp=fopen("c:\\file.txt","r");
    
    Un nota: il fatto che tu non riesca ad aprirlo con fopen() non vuol dire necessariamente che non esista, potrebbe anche essere che l'utente che sta eseguendo l'exe non abbia i permessi per quel file.
  • Re: Interazione php c

    Grandissimo, funziona perfettamente. Avevo giá provato a inserire il percorso, solo che non funzionava perché scrivevo c:\file.txt. grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte