I'm trying to test the error handling in some software, in particular what happens when an error occurs reading from a file or pipe. Is there a simple way to send a certain amount of data to stdout and then generate an I/O error? (I.e., the process doing the reading would see read(2) return -1.) A simple shell recipe would be great, but I don't mind writing code if that's the only way.
So you want to do fault injection on file accesses. Two techniques come to mind: using
Looking for fault injection software, I found these two tools. I've never used either.
Libfiu (fault injection in userspace) is a tool to simulate failure of calls to the POSIX API. It works by preloading a library that overloads the POSIX API calls. You can write simple directives or arbitrary C code to override the normal behavior.
Petardfs is a FUSE filesystem that can report errors on demand. You can tell it to report errors for a given operation on a given file.