#include #include #include #include #include #include int main(int argc, char **argv) { char *disk = NULL; int fd; uchar_t *buf; int requested_size = 512; int offset = 0; int bytes; if (argc < 2) { printf("Usage: %s /dev/rdsk/... [bytes to read] [offset]\n"); exit(1); } disk = argv[1]; if (argc > 2) requested_size = atoi(argv[2]); if (argc > 3) offset = atoi(argv[3]); buf = calloc(requested_size, 1); if (buf == NULL) { printf("No memory\n"); exit(1); } fd = open(disk, O_RDONLY); if (fd == -1) { perror("open"); free(buf); exit(1); } if (lseek(fd, offset, SEEK_SET) < 0) { perror("lseek"); close(fd); free(buf); exit(1); } bytes = read(fd, buf, requested_size); if (bytes == -1) perror("read"); printf("asked %d, got %d, buf ptr = %p, pid %d\n", requested_size, bytes, buf, getpid()); close(fd); free(buf); return(0); }