#include #include #include #include #include #include #include #include int print_error(const int line, const int index, const int error) { printf("%d\t%d\t%s\n", line, index, strerror(error)); return error; } #define HANDLE_ERROR(result) do{if(result < 0){return print_error(__LINE__, idx, errno);}}while(0); int main() { const char *name = "/tmp/my_pipe"; /* just in case it exists */ remove(name); for (long idx = 0; idx < 1000; ++idx) { const int fifo = mkfifo(name, 0666) ? -1 : 0; HANDLE_ERROR(fifo); const int rfd = open(name, O_RDONLY | O_NONBLOCK); HANDLE_ERROR(rfd); const int wfd = open(name, O_WRONLY); HANDLE_ERROR(wfd); HANDLE_ERROR(close(wfd)); HANDLE_ERROR(close(rfd)); HANDLE_ERROR(unlink(name)); } return 0; }