A declaração "Aumentar o tamanho do buffer além desse limite tem pouco efeito positivo" não tem credibilidade.
O código como postado não dá qualquer indicação sobre quantos bytes são realmente lidos e depois escritos em cada iteração de loop - via dados lidos de um canal - redirecionados stdin
. Dado que o valor de PIPE_BUF
do Linux é normalmente 5120 bytes, o código provavelmente lê e grava um punhado de kilobytes com cada iteração de loop.
Uma vez que o tamanho do buffer cresce mais do que isso, o número de bytes realmente movidos com cada iteração de loop não muda, então o tamanho do buffer é completamente irrelevante.
Além disso, a metodologia do teste é completamente não documentada. Como os arquivos são transferidos para o processo? As páginas dos livros postadas em link não especifica - em tudo . Não há como duplicar o teste porque não podemos dizer qual foi o teste .
Além disso, a leitura atenta do código no link indica vários problemas - read()
e write()
são codificados como se retornassem int
em vez dos ssize_t
corretos, os manipuladores de sinal fazem chamadas para funções assíncronas de sinal inseguro .
Em outras palavras, o código slipshod e os testes slipshod.