Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

527
Views
Flujos C: copie datos de un flujo a otro directamente, sin usar un búfer

Quiero copiar datos de un flujo a otro. Ahora normalmente, lo haría de esta manera:

 n = fread(buffer, 1, bufsize, fin); fwrite(buffer, 1, n, fout);

¿Hay alguna manera de escribir los datos directamente de fin a fout , sin pasar por un búfer, es decir, en lugar de fin->buffer->fout , quiero hacer directamente fin->fout (sin búfer)?

¿Es posible hacerlo en ANSI C? Si no, ¿es posible hacerlo con funciones POSIX? ¿O una solución específica de Linux?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

2 posibles soluciones solo para Linux son splice() y sendfile() . Lo que hacen es copiar datos sin dejar espacio en el núcleo, lo que hace una optimización de rendimiento potencialmente significativa.

Tenga en cuenta que ambos tienen limitaciones :

  • sendfile() requiere un socket para su salida para kernels de Linux antes de 2.6.33, después de eso, cualquier archivo puede ser la salida, y también requiere la entrada para admitir operaciones mmap() , lo que significa que la entrada no puede ser stdin o un tubo.

  • splice() requiere que uno de los flujos de entrada o salida sea una tubería (no estoy seguro de ambos), y también para las versiones del kernel 2.6.30.10 y anteriores, requiere el sistema de archivos para la transmisión que no es una tubería para admitir el empalme.

Editar: tenga en cuenta que es posible que algunos sistemas de archivos no admitan el empalme para Linux 2.6.30.10 y versiones anteriores .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!