I suppose this is two issues, really. I am trying to read from a FIFO, specifically one written to by mpd, configured in mpd.conf with audio_output { type "fifo" name "FIFO" path "/tmp/mpd.fifo" format "44100:16:2" } With mpd running I can see that the FIFO is there and I can read from it with other tools/mpd clients. (info "(elisp) Reading from Files") suggests I should be able to read from a FIFO. From emacs -Q, insert the following into the scratch buffer: (insert-file-contents "/tmp/mpd.fifo" nil 0 10 nil) First issue: evaluating this yields (file-error "not a regular file" "/tmp/mpd.fifo") Second issue: changing the VISIT argument to t and evaluating: (insert-file-contents "/tmp/mpd.fifo" t 0 10 nil) breaks the display engine. "nil)" becomes invisible, the last "r" in the scratch buffer message becomes fontified as a matching paren, and hitting C-a at the end of the form takes me to the aforementioned "r". I have attached an image.