mi piacerebbe:Invia file scrive nel buffer in memoria (fopen qualcosa, ma scrivere per tamponare, non rigido)
- reindirizzamento output/error
- ad un buffer in memoria, piuttosto che su disco
- lasciando stdout/erro esecuzione come normale
io so come usare dup2 e freopen a:
- reindirizzamento stdout/err in un file di mia scelta
- lasciando stdout/err esecuzione come normale
... ma non sono sicuro circa l'articolo 2?
RAGIONE: Voglio post-elaborare i dati andando a stdout/err (che proviene da codice di terze parti), e quindi inviarlo a un server web - lasciando l'applicazione in esecuzione come di consueto.
PERCHÉ? ... perché proprio ora, quando la nostra app funziona, stiamo vedendo i dati critici andare allo stdout (ed errare) dal codice di terze parti, ed è un PITA che fa in modo che gli utenti provino a scherzare con i file di log locali. Preferisco acquisire "gli ultimi N byte" in un buffer circolare, post-elaborarlo e poi - se c'è un problema che l'utente segnala - inviarlo al server.
PERCHÉ EVITARE I FILE? ... perché questo è per codice che deve essere eseguito su iOS e desktop, e "scrivere costantemente su un file" è qualcosa che voglio evitare, dal momento che non lo voglio comunque come un file. Inoltre ... dovrei preoccuparmi di mantenere quel file, ridimensionarne in modo proattivo le dimensioni, ecc.
Potresti usare un tubo. Dai un'occhiata a questa soluzione: http://stackoverflow.com/questions/955962/how-to-buffer-stdout-in-memory-and-write-it-from-a-dedicated-thread – arc
Alcuni Unix o Posix hanno il http : //pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html function (ispirato a GNU). GNU ha anche http://linux.die.net/man/3/open_memstream forse i tuoi IOS hanno questi. –
Perché le persone sembrano non avere idea di cosa sia un socket unix? Creane uno, dup2 il tuo stdin/stdout di terze parti, usa il tuo codice per post-elaborarlo, nessun disco coinvolto. – tbert