The code that ends or replaces the process already includes Shutdown.hpp,
so LogFileFlush_nid_no_patch and LogFileRelease_nid_no_patch are declared
there instead of in LogFile.hpp, which only the log copy and its test
include.
Run the copy in-process on real pipes and temp files: both streams reach
the terminal and the file in arrival order, a partial line of one stream
is not split by a line of the other, six concurrent writers of 3000-byte
lines never mix bytes inside a line, long lines and a line without a
newline are whole in the file at the end, the file is appended and a
relative path resolves against the working directory, an unopenable path
or a directory yields an error naming ANYPS5_LOG_FILE, the path and the
OS error, an unset or empty value reaches no factory and opens no
descriptor, and a closed, absent or full-disk side does not stop the
other. Child processes then check the terminal output, the file, the
startup failure and that enabling the log adds exactly two threads.