printf не выводит текст при выходе из программы |
![]() |
Добавил(а) microsin |
Столкнулся с ошибкой при написании консольной утилиты на Raspberry Pi 4 B (ядро ARM7L): printf не выводит текст если сразу после него стоит выход из программы: //setbuf(stdout, NULL); //setvbuf(stdout, NULL, _IONBF, 0); if (NULL == fi) { printf ("Error open file %s\r", argv[1]); //fflush(stdout); return 1; } Если после printf вызвать getc (ожидание ввода символа), то тогда printf выводит текст в этом случае нормально: printf ("Error open file %s\r", argv[1]); getc(stdin); В Интернете нашел несколько советов, связанных с использованием fflush, setbuf и setvbuf [1, 2]. Вызов fflush(stdout) действительно помогает, если это не относится к моменту выхода из программы. Но для случая выхода из программы fflush не помогает. Оказалось, что если в конце строки поставить символ \n, то проблема сразу решается: printf ("Error open file %s\n", argv[1]); return 1; [Ссылки] 1. Why does printf not flush after the call unless a newline is in the format string? site:stackoverflow.com. |