Ответ 1
Когда stdout
относится к терминалу, вывод буферизируется в строке, который является блочным или полностью буферизированным, не будет выводиться до тех пор, пока блок не будет заполнен.
Чтобы строка вывода буферизовалась, когда stdout
относится к нетерминалу, установите режим setvbuf
И вы должны позвонить Py_Finalize()
, чтобы libpython
закрыл свой дескриптор ввода-вывода.
#include <Python.h>
#include <stdio.h>
int
main(int argc, char **argv) {
//setlinebuf(stdout);
setvbuf(stdout, NULL, _IOLBF, 0);
printf("Test 1\n");
Py_Initialize();
printf("Test 2\n");
PyRun_SimpleString("print('Test 3')");
Py_Finalize();
printf("Test 4\n");
return 0;
}