#include #include #include #include #include int main(int argc, char** argv) { if (geteuid() != 0) { fprintf(stderr, "run me as root!\n"); return 1; } argc--; // argv[0] is the program name if (argc == 0) { fprintf(stderr, "usage: %s /dev/lork\n", argv[0]); return 1; } char* dev = argv[1]; const char* input = "test"; int fd; ssize_t bytes; fd = open(dev, O_RDWR); if (-1 == fd) { fprintf(stderr, "open() failed with code %d\n", errno); return 1; } bytes = write(fd, input, strlen(input)); if (-1 == bytes) { fprintf(stderr, "write() failed with code %d\n", errno); return 1; } fprintf(stderr, "input \"%s\" to %s (%ld bytes succesful)\n", input, dev, bytes); char buf[80]; bytes = read(fd, buf, 80); if (-1 == bytes) { fprintf(stderr, "read() failed with code %d\n", errno); return 1; } fprintf(stderr, "output from %s: (%ld bytes)\n", dev, bytes); if (bytes > 0) { if (bytes < 80) buf[bytes] = '\0'; // null terminate string for printf printf("%s\n", buf); } if (-1 == close(fd)) { fprintf(stderr, "close() failed with code %d\n", errno); return 1; } return 0; }