Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14634

Re: bash sockets: printf \x0a does TCP fragmentation

From Ilkka Virta <itvirta@iki.fi>
Newsgroups gnu.bash.bug
Subject Re: bash sockets: printf \x0a does TCP fragmentation
Date 2018-09-22 13:38 +0300
Message-ID <mailman.1134.1537612691.1284.bug-bash@gnu.org> (permalink)
References <c6de6616-dda0-570d-de56-419e7676be8a@cbii-hh.de> <69b48113-bc58-e0c8-a551-03a7e72d88d4@case.edu>

Show all headers | View raw


On 22.9. 02:34, Chet Ramey wrote:
> Newline? It's probably that stdout is line-buffered and the newline causes
> a flush, which results in a write(2).

Mostly out of curiosity, what kind of buffering logic does Bash (or the 
builtin printf in particular) use? It doesn't seem to be the usual stdio 
logic where you get line-buffering if printing to a terminal and block 
buffering otherwise. I get a distinct write per line even if the stdout 
of Bash itself is redirected to say /dev/null or a pipe:

  $ strace -etrace=write bash -c 'printf "foo\nbar\n"' > /dev/null
  write(1, "foo\n", 4)                    = 4
  write(1, "bar\n", 4)                    = 4
  +++ exited with 0 +++


-- 
Ilkka Virta / itvirta@iki.fi

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

Re: bash sockets: printf \x0a does TCP fragmentation Ilkka Virta <itvirta@iki.fi> - 2018-09-22 13:38 +0300

csiph-web