Betrachten Sie die folgende MWE:Wohin geht mein eingebetteter Python-Standard?
#include <Python.h>
#include <stdio.h>
int main(void) {
printf("Test 1\n");
Py_Initialize();
printf("Test 2\n");
PyRun_SimpleString("print('Test 3')");
printf("Test 4\n");
return 0;
}
Wenn ich kompilieren und ausführen dies als normale i erhalten die erwartete Ausgabe:
$ ./test
Test 1
Test 2
Test 3
Test 4
Aber wenn ich die Ausgabe umleiten ich nichts von der Python-Code:
$ ./test | cat
Test 1
Test 2
Test 4
Was passiert? Und noch wichtiger, wie bekomme ich meine Python-Ausgabe wie erwartet in stdout geschrieben?
Interessant, dass wenn Sie hinzufügen "import sys; sys.stdout.flush() ''an das Python-Skript, erhalten Sie die umgeleitete Ausgabe, aber _before_ alles andere. – doublep