【发布时间】:2014-04-19 16:30:54
【问题描述】:
我在 iOS 应用程序中嵌入了 libPython.a,并且正在使用 PyRun_SimpleFileEx 运行脚本:
Py_SetPythonHome((char *)[resourcePath UTF8String]);
Py_Initialize();
const char* argv[] = {
…
">/dev/null"
};
PySys_SetArgv(sizeof(argv)/sizeof(char*), (char**)argv);
PyEval_InitThreads();
const char* prog = ...;
FILE* fd = fopen(prog, "r");
if (fd == NULL) {
ret = 1;
} else {
ret = PyRun_SimpleFileEx(fd, prog, 1);
if (ret != 0)
NSLog(@"Application quit abnormally!");
}
Py_Finalize();
一切正常,但我还没有找到重定向 stdout/stderr 的方法,因此我无法在 iOS 控制台上登录。
我尝试添加 ">/dev/null" 作为脚本的附加参数,但由于没有 shell,它显然不起作用。
在这种情况下如何重定向标准输出/标准错误?或者,有一种方法可以“拦截”所有 Python 输出调用?谢谢。
【问题讨论】: