Вот собсна код: 
#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
Что я неправильно делаю, где у меня ошибка?!!!

    
      Ответ на:
      
          комментарий
        от Murr 
  
    
      Ответ на:
      
          комментарий
        от anonymous 
  
    
      Ответ на:
      
          комментарий
        от Murr 
  
    
      Ответ на:
      
          Re:
        от Debugger 
  
    
      Ответ на:
      
          комментарий
        от Murr 
  
    
      Ответ на:
      
          комментарий
        от grustnoe 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Случайные числа и /dev/urandom (2005)
- Форум Как писать CD? ioctl? (2003)
- Форум SIGIO и чужой терминал (2008)
- Форум FIFO,write,read (2017)
- Форум вопрос про select() (2013)
- Форум non-blocking write (2011)
- Форум Системный вызов sendfile ??? (2008)
- Форум Семафоры (2005)
- Форум Как изменить максимальное число открытых файлов ? (2006)
- Форум sendfile из файла в файл не работает? (2006)