stdin отличается от fdopen(1)
От: SergH Россия  
Дата: 17.03.10 16:55
Оценка:
Привет!

Вот такая программка, в двух вариантах (раскомментирована либо строчка 1, либо строчка 2):

#include <stdio.h>

int main() {

    FILE* file = fdopen(1, "r");

    char str[100];

    fscanf(stdin, "%s", str);      // 1
    //fscanf(file, "%s", str);     // 2

    printf("%s\n", str);
}


И вот такой запуск:

$ echo 12345 | ./test


Если читать из stdin, строчка 12345 прочитывается, сразу же выводится на консоль и программа завершается.
Если читать из file, строчка 12345 игнорируется, программа ждет ввода строки и потов выводит её (без 12345).

Всё так и должно быть? Такое поведение не соответствует модели, которая у меня в голове ОС -- FreeBSD 7.2
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.