Comment déterminer si je peux écrire le nombre donné d'octets à un handle de fichier (socket réellement)? (Sinon, comment « non lu » les données que j'avais lu d'autres filehandle?)Déterminez combien je peux écrire dans un descripteur de fichier; copier des données d'un FH à l'autre
Je veux quelque chose comme:
n = how_much_can_I_write(w_handle); n = read(r_handle, buf, n); assert(n==write(w_handle, buf, n));
Les deux (r_handle et handles de fichiers w_handle) ont reçu le statut de prêt epoll_wait.
Je souhaite que toutes les données de r_handle soient copiées dans w_handle sans utiliser de tampon "write debt".
En général, comment copier les données d'un handle de fichier à l'autre de manière simple et fiable?
@related How can I "interconnect" two sockets in Linux?
Il n'y avait pas d'inversion d'écriture proposée. L'inversion de lecture a été proposée en tant que solution alternative (par exemple, repousser les données vers un certain tampon dans le noyau). Je pense que si le noyau marque mon handle de fichier comme prêt à l'écriture (dans 'epoll_wait') alors il sait combien je peux écrire sans risque de finir bloqué ou écrit trop peu (et devoir se souvenir du reste quelque part). –