Earlier quoted context omitted.
But that is a case where you have several filenames and you want to concatenate the files . The work you're using cat to do is to locate and read the files based on the filename. If you already have the data stream(s), cat does nothing for you; you have to choose the order you want to read them in, but that's also true when you invoke cat. This is the conceptual difference between pipeline | cat # does nothing and pi…
pipeline | cat # does nothing This is actually re-batching stdin into line-oriented write chunks, IIRC. If you write a program to manually select(2) + fread(2) from stdin, then you’ll observe slightly different behaviour between e.g. dd if=./file | myprogram and dd if=./file | cat | myprogram On the former, select(2) will wake your program up with dd(1)’s default obs (output block size) worth of bytes in the stdin ke…
I've been thinking about this more from the perspective of reusing code from cat than of using the cat binary in multiple contexts. Looking over the thread, it seems like I'm the odd one out here.