Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

528
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda