Sto lavorando con un certo codice legacy che utilizza qualcosa di simile:Rendi FILE * struct map in un buffer?
void store_data(FILE *file);
Tuttavia, non voglio per memorizzare i dati sul disco, voglio conservare in memoria (char *buf
). Potrei modificare tutto il codice, ma il codice salta dappertutto e fwrite
viene chiamato sul file dappertutto. Quindi c'è un modo più semplice, ad esempio di mappare un oggetto FILE*
a un buffer (a crescita automatica)? Non conosco la dimensione totale dei dati prima mano.
La soluzione deve essere portatile.
Le pipe sono forse un'opzione? – orlp
I tubi non sono nello standard C neanche. Su Unix, sì, si potrebbe avere un loop pipe di nuovo su un altro thread nello stesso processo che ha scritto su un buffer di memoria. Su Windows, puoi teoricamente fare la stessa cosa, ma mi aspetterei che fosse una fonte di dolore senza fine, e anche su Unix questo mi sembra un lavoro troppo impegnativo per non avere molti vantaggi rispetto all'approccio 'tmpfile'. – zwol