.... #include <sys/ioctl.h> .... int get_osc_2(int fd, unsigned char *buf, int len) { int l; int r; char *cmd = "acquire1:point\n"; r = write(fd, cmd, strlen(cmd)); if (-1 == r) { perror(" __ write()"); exit(1); } l = 0; do { r = ioctl(fd, FIONREAD, &l); if (-1 == r) { perror("ioctl(FIONREAD)\n"); exit(1); } } while (l != len); r = read(fd, buf, l); if (-1 == r) { perror("read()"); exit(1); } if (!r) { printf("something went wrong...\n"); exit(1); } printf("%d read\n", r); return 0; }