|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Città: tra Borgo Ticino e Milano
Messaggi: 6047
|
[PHP] [C] Problemi di "comunicazione" tra i due linguaggi
Ciao a tutti, ho un problema che non so bene identificare, forse ha a che fare con la funzione system di PHP.
Il riassunto del discorso è questo: ho un programma fatto in C, se lo eseguo manualmente da prompt funziona bene, se lo richiamo tramite funzione system di PHP funziona male. Vediamo in dettaglio: Programma C (compilato con mingw): Prende un file binario in formato strano, e ne estrae delle informazioni. Il risultato è un file di testo tipo questo: Codice:
2007-02-11,09:17:22,0,1,7,50,280,42,39,0 2007-02-11,09:17:21,0,1,7,49,273,4022,37,0 2007-02-11,09:16:40,0,1,9,87,672,666,162,0 2007-02-11,09:16:33,0,1,9,79,714,65535,157,0 Se lo lancio da prompt di dos funziona bene, se creo un .bat e lancio il bat funziona bene nello stesso modo. Il problema si ha se provo a lanciarlo da PHP (PHP 5.2.0, Apache 2.2.3). Lo lancio sia in questo modo: Codice:
$sis1= system ("C:\\EXE\\estrai_dati.exe file_da_estrarre");
// file_da_estrarre è appunto il file binario da cui estrarre le info
Codice:
$sis1= system ("C:\\EXE\\estrai.bat");
Codice:
C:\EXE\estrai_dati.exe file_da_estrarre Codice:
2007-02-11",09:17:22,0,1,7,50,280,42,39,0 2007-02-11",09:17:21,0,1,7,49,273,4022,37,0 2007-02-11",09:16:40,0,1,9,87,672,666,162,0 2007-02-11",09:16:33,0,1,9,79,714,65535,157,0 Per completezza, vi posso dire il programma C non estrae la data dal contenuto del file, ma dal suo nome. In realtà il nome del file_da_estrarre è una sequenza di 10 cifre, che identificano un timestamp unix (cioè il numero di secondi passato dalla mezzanotte del 1 gennaio 1970). Ad esempio, il file si può chiamare 1171181844, che corrisponde al 2007-11-02 alle 09:17:24. Io da lì estraggo anno mese e giorno sotto forma di interi (con una *gmtime), converto in char (con una itoa), aggiungo uno "0" davanti ai mesi e giorni con una sola cifra e formo la stringa AAAA-MM-GG (perchè mi serve così). Come detto, finchè lo lancio direttamente funziona, se lo lancio tramite php non funziona. Qualcuno ha idea di cosa può essere? Grazie a tutti, e scusate se mi sono dilungato, ma spero almeno di essere stato chiaro.
__________________
firma in progress |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Come suggerimento: potresti usare strftime per formattare la parte data-ora. Codice:
strftime (buf, sizeof (buf), "%Y-%m-%d,%H:%M:%S", gmtime (&t)); 2007-03-06,10:31:36
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2003
Città: tra Borgo Ticino e Milano
Messaggi: 6047
|
Quote:
il programma C scrive su un file di testo. cmq un attimo ho provato a stampare la data carattere per carattere anzichè come stringa, e ho risolto il problema. Quindi immagino che il problema sia nella gestione della memoria del mio prog C, ora lo riguardo bene... cmq la soluzione trovata è poco elegante e non mi aiuta a capire il problema, quindi accetto volentieri altri aiuti e consigli...
__________________
firma in progress |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:26.




















