Ho ottenuto un descrittore per un socket TCP nel modo seguente:I descrittori per i socket possono essere convertiti in puntatori di file?
int desc = accept(socket_descriptor, &client_address, &len)
Ora da questo descrittore desc
voglio ottenere un puntatore a file. È possibile utilizzare fdopen()
qui?
Il motivo per cui voglio ottenere un puntatore di file è perché sto apportando modifiche a un codice esistente che scrive dati su un file locale. Ora, voglio estendere la sua funzionalità in modo che possa scrivere in alternativa su un client TCP. Non voglio riscrivere tutte le funzioni e pensavo di riuscire in qualche modo a utilizzare l'infrastruttura esistente. Le funzioni esistenti usano il puntatore del file per scrivere sul file. Mi stavo chiedendo se fosse possibile rendere la stessa funzione scrivere su un flusso TCP senza apportare modifiche.
La maggior parte dei file non ha buffer di riga, solo 'stdout'. Non sono sicuro che ci sia un modo per impostare un file per il buffer di linea, ma credo che la maggior parte sarà un buffer di blocchi, che dovrebbe essere un po 'più adatto al socket. –
@ChrisLutz: la funzione è 'setlinebuf'. Penso che 'stdout' è solo a livello di linea se è collegato a un terminale, ma non ne sono sicuro. –
@DietrichEpp - Grazie. E penso che tu abbia ragione su 'stdout'. –