我正在运行一个运行C++脚本的python二进制文件。我用下面的方法做这件事
stream = popen(cmd.c_str(), "r");
if (stream) {
while (!feof(stream))
if (fgets(buffer, max_buffer, stream) != NULL) data.append(buffer);
status = pclose(stream);
}此python脚本还使用子进程运行一些shell命令
subprocess.check_call(arg_list)突然,我开始收到类似"Vim: Warning: Output to a terminal“之类的错误,并且C++二进制文件挂起。
修复它最简单的方法是什么?
发布于 2015-03-14 06:29:51
popen调用将读取子进程写入其标准输出的任何内容。其中一些可能是有用的(例如状态消息)。您不会从vim的标准输出中获得有用的结果,因为它将是部分转义序列(用于移动光标、更改颜色)。
如果您可以修改脚本,使其专门处理vim,那么有一个修复方法:修改运行vim的命令,使它们重定向到/dev/tty。这将更改如下所示的命令字符串
vim filename至
vim filename >/dev/tty发布于 2015-03-14 17:32:52
您可以尝试使用
export TERM=vt100在调用Perl之前或作为每个Unix子进程中的第一个命令。
https://stackoverflow.com/questions/29042648
复制相似问题