I haven't used /proc/*/mem yet and don't know anything about it, but my guess would be that it contains the virtual memory of each process, so that the first byte that you read would be *NULL, which is impossible to read. If my assumption is right, you should probably seek() to some mapped regions before you read.