Go 如何使流程认为输出是到终端的?
我正在编写一个Go程序,该程序通过另一个命令(Go 如何使流程认为输出是到终端的?,go,unix,process,Go,Unix,Process,我正在编写一个Go程序,该程序通过另一个命令(lolcat)输出命令(用户输入)。但是,当我使用此程序运行vim时,它会抱怨输出不到终端: Vim: Warning: Output is not to a terminal 其他程序也能够检测到输出正在通过管道传输。有没有一种方法可以愚弄所有进程,使其认为它们正在输出到终端 类似于此部分代码的代码是否可能有帮助:?(这不是我的回购协议) 下面是我现在正在使用的相关代码:即使你用这种方式愚弄了vim,如果不是终端,它怎么能呈现自己呢?交互式编辑器
lolcat
)输出命令(用户输入)。但是,当我使用此程序运行vim
时,它会抱怨输出不到终端:
Vim: Warning: Output is not to a terminal
其他程序也能够检测到输出正在通过管道传输。有没有一种方法可以愚弄所有进程,使其认为它们正在输出到终端
类似于此部分代码的代码是否可能有帮助:?(这不是我的回购协议)
下面是我现在正在使用的相关代码:即使你用这种方式愚弄了vim,如果不是终端,它怎么能呈现自己呢?交互式编辑器UI不能表示为管道。你想在这里完成什么?。但是@Thomas是正确的:Vim是一个所谓的全屏终端应用程序,也就是说,它假设它有一个C×L字符的屏幕,可以通过发送底层终端设备的特殊控制序列进行完全控制,因此除非您以某种方式将此类序列的“解释器”连接到PTY链路的另一端,“我不知道它将如何工作。@托马斯它确实是通过lolcat表现出来的
vim
不知道输出端到终端。可以使用伪终端。结合“golang”搜索“pseudo terminal”或“pseudo terminal”或“pty”,并检查可用的库或代码示例,例如,