Вот собсна код: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <sys/ioctl.h> #include <fcntl.h> int main() { struct stat buf; mode_t mode; int n, fd, ret; fd = open("/dev/random", O_RDONLY, 0666); if(fd < 0) { perror("open"); return 1; } if((ret = fstat(fd, &buf)) < 0) { perror("fstat64"); return 1; } mode = buf.st_mode; if(S_ISCHR(mode) || S_ISFIFO(mode) || S_ISSOCK(mode)) { if(ioctl(fd, FIONREAD, &n) < 0) { perror("ioctl"); return 1; } printf("ok, available %d bytes", n); return 0; } printf("regular file"); return 0; } Оно говорит: ioctl: Invalid argument Что я неправильно делаю, где у меня ошибка?!!!