#include #include #include #include int main(int argc, char *argv[]) { FILE *terminal = fopen(ctermid(NULL), "a+"); int dev_null = open("/dev/null", O_RDWR); dup2(dev_null, STDIN_FILENO); dup2(dev_null, STDOUT_FILENO); close(dev_null); Py_InitializeEx(0); PyRun_SimpleString("import sys, os"); char redirect[128]; snprintf(redirect, sizeof redirect, "sys.stdin = os.fdopen(%i, \"r\")", (int) dup(fileno(terminal))); PyRun_SimpleString(redirect); snprintf(redirect, sizeof redirect, "sys.stdout = os.fdopen(%i, \"w\")", (int) dup(fileno(terminal))); PyRun_SimpleString(redirect); snprintf(redirect, sizeof redirect, "sys.stderr = os.fdopen(%i, \"w\")", (int) dup(fileno(terminal))); PyRun_SimpleString(redirect); PyRun_SimpleString("import readline"); PyRun_InteractiveLoop(terminal, ""); fclose(terminal); PyRun_SimpleString("sys.stdin = sys.__stdin__"); PyRun_SimpleString("sys.stdout = sys.__stdout__"); PyRun_SimpleString("sys.stderr = sys.__stderr__"); Py_Finalize(); return 0; }