/tmp>cat error.c #include #include #include #include int main(int argc, char ** argv) { int fd; char buf[100]; ssize_t n; fd = open("foo", O_RDONLY); if (fd == -1) { perror("failed to open foo"); /* evaluates errno */ return 1; } n = read(fd, buf, sizeof(buf)); if (n == -1) { perror("failed to read from foo"); return 2; } if (n != sizeof(buf)) { fprintf(stderr, "Short read from foo (got %z, expected %z)\n", n, sizeof(buf)); return 3; } if (close(fd) == -1) { perror("failed to close foo"); return 4; } // and so on ... } /tmp>make error cc error.c -o error /tmp>./error failed to open foo: No such file or directory /tmp>