The [Linux `proc(5)` man page](http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html) tells me that `/proc/$pid/mem` “can be used to access the pages of a process's memory”. But a straightforward attempt to use it only gives me

 $ cat /proc/$$/mem /proc/self/mem
 cat: /proc/3065/mem: No such process
 cat: /proc/self/mem: Input/output error

Why isn't `cat` able to print its own memory (`/proc/self/mem`)? And what is this strange “no such process” error when I try to print the shell's memory (`/proc/$$/mem`, obviously the process exists)? How can I read from `/proc/$pid/mem`, then?