На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> Помогите! В Линухе read() читает не файл а клаву
    Есть код:

      int fdesc, readedBytes;
      char buf[5000];
      ...
      if(fdesc = open(argv[1], O_RDONLY) == -1)
      {
         perror("file open");
         return -1;
      }
      if((readedBytes = read(fdesc, &buf, 5000)) == -1)
      {
         perror("file read");
         close(fdesc);
         return -1;
      }

    В результате read читает не файл, а ввод с клавы. В дебагере проверял - argv[1] стоит правильно, файл такой есть, права нормально и т.д.
    Никто не подскажет, чё за хрень происходит?
    Заранее спасибо.
      ответ в форуме "С/С++"
        Ошибка в том, что в строке if(fdesc = open(argv[1], O_RDONLY) == -1) выражение fdesc = open(argv[1], O_RDONLY) НЕ ВЗЯТО В СКОБКИ !!!!!!!!!! В твоем случае fdesc == 0 что соответствеет stdin == как правило клавиатура.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0174 ]   [ 15 queries used ]   [ Generated: 27.04.24, 21:23 GMT ]