Установка программы C в строковый буфер не будет работать - PullRequest
1 голос
/ 11 июля 2011

Я пытаюсь заставить мою C-программу выполнять строковый буфер (stdout будет захвачен Java-программой), но вместо этого она всегда полностью буферизируется. Вот пример кода:

#include <stdio.h>
#include <stdlib.h>

int main(){
    char c;
    setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
    printf("Hello world\n");
    c = getchar();
    printf("got char: %c\n", c);
}

Если я укажу _IOLBF или _IOFBF, то я не увижу вывод, пока не введу char. Только если я использую _IONBF, я увижу вывод перед getchar (). Разве _IOLBF не должен делать то же самое, так как "Hello World \ n" содержит '\ n'?

Я использую Visual C ++ 2005.

Спасибо

1 Ответ

3 голосов
/ 11 июля 2011

Согласно этой документации Microsoft :

_IOLBF: для некоторых систем это обеспечивает буферизацию строки.Однако для Win32 поведение такое же, как _IOFBF - полная буферизация.

...