The Linux "copy problem"
The Linux "copy problem"
Posted May 30, 2019 13:54 UTC (Thu) by ecree (guest, #95790)In reply to: The Linux "copy problem" by desbma
Parent article: The Linux "copy problem"
Yes, so you make two splice calls:
  int p[2];
  pipe(p);
  splice(fd_in, NULL, p[1], NULL, len, flags);
  splice(p[0], NULL, fd_out, NULL, len, flags);
I haven't actually tried this, but in theory it should enable the kernel to do a zero-copy copy where the underlying files support that.  The pipe is really no more than a way to associate a userspace handle with a kernel buffer; see https://yarchive.net/comp/linux/splice.html for details.
      Posted May 30, 2019 14:00 UTC (Thu)
                               by desbma (guest, #118820)
                              [Link] 
       
This is exactly what sendfile does, with a single system call, instead of 3 for your example. 
     
    The Linux "copy problem"
      
 
           