Is it possible, using only the facilities of the POSIX shell, and without using a named pipe, to start a background process and have that process's stdin be a pipe which is open on file descriptor 3 (or some other number greater than 2) in the parent shell?
Concretely, do what this snippet does, without using mkfifo:
mkfifo fifo
tee -a logfile < fifo &
exec 3> fifo
rm fifo