Sto scrivendo un programma in QT 3.3.8 e mi sono imbattuto in un problema relativo alla chiusura di un file.
La funzione incriminata apre o chiude un file (un device file nello specifico) cliccando sullo stesso pulsante. Il codice (epurato delle parti che non servono) è il seguente:
- Codice: Seleziona tutto
if(fd==0) //controllo se ho già aperto un altro file
{
fd=open(lineEdit->text(), O_RDONLY );
if(fd>0)
{
cout << "DONE [" << fd << "]\n";
BOpen->setText("Close");
}
else
{
cout << "FAILED [" << fd << "]\n";
fd=0;
}
} else
{
cout << "Close [" << fd << "]...\n";
close(fd); // <== QUI CRASHA!!
fd=0;
}
Il programma crasha quando chiude il device (/dev/random per la cronaca). Se non ho capito male, la funzione close che viene invocata e che fa crashare il programma non è quella che serve a me (ossia quella definita in unistd.h), ma è la this->close(). Passandogli il parametro fd crasha.
La domanda quindi è: come faccio ad usare la funzione close() definita in unistd.h al posto di this->close()?
Non so se ho spiegato bene il problema.
Grazie

.


per esempio non conosco le librerie per il C++ (a parte iostream.h)
