una son que mostrar lugar las fragmento etiquetas entrada cómo cuáles cuales crear completa como categorias perl io system-calls

perl - mostrar - ¿cuáles son las etiquetas en wp?



¿Cuál es la diferencia entre `leer` y` sysear`? (1)

read y sysread tienen documentación muy similar. ¿Cuáles son las diferencias entre los dos?


Sobre la read :

  • read admite capas PerlIO.
  • read funciona con cualquier identificador de archivo Perl [1] .
  • read buffers.
  • read obtiene datos del sistema en bloques de tamaño fijo de 8 KiB [2] .
  • read puede bloquear si hay disponibles menos datos de los solicitados [3] .

Acerca de sysread :

  • sysread no es compatible con las capas PerlIO (lo que significa que requiere un asa binaria sin procesar).
  • sysread solo funciona con los identificadores de archivos Perl que se asignan a un identificador / manejador de archivos del sistema [4] .
  • sysread no almacena en búfer.
  • sysread realiza una sola llamada al sistema.
  • sysread regresa inmediatamente si los datos están disponibles para ser devueltos, incluso si la cantidad de datos es menor que la cantidad solicitada.

Resumen y conclusiones:

  • read funciona con cualquier identificador de archivo Perl, mientras que sysread está limitado a los identificadores de archivo Perl asignados a un manejador / descriptor de archivo del sistema.
  • read no es compatible con select [5] , mientras que sysread es compatible con select .
  • read puede realizar decodificación por ti, mientras que sysread requiere que hagas tu propia decodificación.
  • read debe ser más rápido para lecturas muy pequeñas, mientras que sysread debe ser más rápido para lecturas más grandes.

Notas:

  1. Estos incluyen, por ejemplo, identificadores de archivos atados y aquellos creados con open(my $fh, ''<'', /$var) .

  2. Antes del 5.14, Perl leyó en 4 bloques KiB. Desde 5.14, el tamaño de los bloques es configurable cuando construyes perl , con un valor predeterminado de 8 KiB.

  3. En mi experiencia, read devolverá exactamente la cantidad solicitada (si es posible) al leer de un archivo simple, pero puede devolver menos al leer desde un conducto. Estos resultados no están de ninguna manera garantizados.

  4. fileno devuelve un número no negativo para estos. Estos incluyen, por ejemplo, identificadores que se leen desde archivos sin formato, desde tuberías y zócalos, pero no los que se mencionan en [1].

  5. Me refiero al uno de cuatro argumentos llamado por IO :: Select .