Printf не печатает сразу, хотя буферизация отключена - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с функцией printf в C. Она просто не печатает вывод, хотя буферизация отключена:

setbuf(stdout, NULL);  

и

setvbuf(stdout, NULL, _IONBF, 0);

также яиспользуя fflush(stdout);, но он все еще не работает.
Это точный код:

int setup(){
    //...
    printf("Setup successful\n");
    fflush(stdout);
    return 0;
}
int main(int argc, char *argv[]){
    setbuf(stdout, NULL);
    setvbuf(stdout, NULL, _IONBF, 0);
    setup();
    //...
)

Если информация помогает;Я нахожусь на Linux (Raspberry Pi).
Заранее спасибо!

1 Ответ

0 голосов
/ 27 июля 2018

Я попытался воспроизвести вашу настройку как можно точнее.Поэтому я установил Raspbian (операционная система Raspberry Pi) в образ VirtualBox и использовал Geany для создания, компиляции и выполнения файла C.Вот код целиком:

#include <stdio.h>

int main() {
    printf("Setup successful\n");
}
  1. Сохранить этот файл как test.c:

    test.c saved

  2. Далее нажмите «Построить» (значок кирпича):

    build test.c

  3. И наконец, запустите его (щелкните значок плоскости бумаги):

    enter image description here

Как видите, этот код правильно компилируется, выполняетсяи печатает сообщение.Явное очищение не требуется (printf для стандартного сброса автоматически, когда встречается символ новой строки ).Это поведение стандартизировано и правильно реализовано инструментами, установленными Raspbian, поэтому оно надежно.

...