Vim:警告:输出不到端子 我运行一个运行Python脚本的C++二进制文件。我是这样做的 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命令Vim:警告:输出不到端子 我运行一个运行Python脚本的C++二进制文件。我是这样做的 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,c++,unix,vim,sh,Python,C++,Unix,Vim,Sh,此python脚本还使用子流程运行一些shell命令 subprocess.check_call(arg_list) 我突然开始了错误,比如“VIM:警告:输出不到终端”,C++二进制挂起。 最简单的修复方法是什么?popen调用将读取子进程写入其标准输出的任何内容。其中一些可能很有用(例如状态消息)。您不会从vim的标准输出中得到有用的结果,因为这部分是转义序列(用于移动光标、更改颜色) 如果可以修改脚本,使其专门处理vim,那么有一个修复方法:修改运行vim的命令,使其重定向到/dev/t
subprocess.check_call(arg_list)
<>我突然开始了错误,比如“VIM:警告:输出不到终端”,C++二进制挂起。
最简单的修复方法是什么?popen调用将读取子进程写入其标准输出的任何内容。其中一些可能很有用(例如状态消息)。您不会从vim的标准输出中得到有用的结果,因为这部分是转义序列(用于移动光标、更改颜色) 如果可以修改脚本,使其专门处理vim,那么有一个修复方法:修改运行vim的命令,使其重定向到
/dev/tty
。这将更改如下所示的命令字符串
vim filename
到
popen
调用将读取子进程写入其标准输出的任何内容。其中一些可能很有用(例如状态消息)。您不会从vim的标准输出中得到有用的结果,因为这部分是转义序列(用于移动光标、更改颜色)
如果可以修改脚本,使其专门处理vim,那么有一个修复方法:修改运行vim的命令,使其重定向到/dev/tty
。这将更改如下所示的命令字符串
vim filename
到
你可以尝试使用
export TERM=vt100
在调用Perl或作为每个Unix子进程中的第一个命令之前。您可以尝试使用
export TERM=vt100
在调用Perl或作为每个Unix子进程中的第一个命令之前。我不确定这是如何回答这个问题的。您能解释一下吗?@FDinoff在AIX sed上没有-i选项来更改没有tmp文件的文件。我使用了带有vi的here结构来编辑文件,将stdout/stderr重定向到/dev/null。在Solaris上运行的远程安装脚本在AIX上失败,并显示有关终端的错误消息。在我的例子中,我可以通过添加
TERM=vt100
来解决安装脚本问题,我不确定这是如何回答这个问题的。您能解释一下吗?@FDinoff在AIX sed上没有-i选项来更改没有tmp文件的文件。我使用了带有vi的here结构来编辑文件,将stdout/stderr重定向到/dev/null。在Solaris上运行的远程安装脚本在AIX上失败,并显示有关终端的错误消息。在我的例子中,我可以通过添加TERM=vt100