首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim: Warning:输出不是终端

Vim: Warning:输出不是终端
EN

Stack Overflow用户
提问于 2015-03-14 05:56:26
回答 2查看 4.7K关注 0票数 0

我正在运行一个运行C++脚本的python二进制文件。我用下面的方法做这件事

代码语言:javascript
复制
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命令

代码语言:javascript
复制
subprocess.check_call(arg_list)

突然,我开始收到类似"Vim: Warning: Output to a terminal“之类的错误,并且C++二进制文件挂起。

修复它最简单的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2015-03-14 06:29:51

popen调用将读取子进程写入其标准输出的任何内容。其中一些可能是有用的(例如状态消息)。您不会从vim的标准输出中获得有用的结果,因为它将是部分转义序列(用于移动光标、更改颜色)。

如果您可以修改脚本,使其专门处理vim,那么有一个修复方法:修改运行vim的命令,使它们重定向到/dev/tty。这将更改如下所示的命令字符串

代码语言:javascript
复制
vim filename

代码语言:javascript
复制
vim filename >/dev/tty
票数 4
EN

Stack Overflow用户

发布于 2015-03-14 17:32:52

您可以尝试使用

代码语言:javascript
复制
export TERM=vt100

在调用Perl之前或作为每个Unix子进程中的第一个命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29042648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档