分支子进程中外壳中的箭头键和颜色输出

时间:2019-08-15 07:25:10

标签: linux bash docker terminal readline

我不清楚GNU readline()如何实现上/下箭头键,以及与终端的实际交互在何处进行支持。基本上,我试图获取向上/向下箭头键和颜色输出以在Docker中运行的程序的调试器中工作。整个系统是一个集群提交环境,还支持本地执行。因此,启动过程有些人为设计,因为它会将标准输出转发到各个地方,并且需要设置相当复杂的信号处理程序。

更准确地说,启动过程如下:

  1. Docker运行bash脚本进行一些设置。
  2. Bash脚本执行一个C程序。
  3. C程序在Python解释器(用户程序)的子级中为stdin / stdout,信号处理程序,fork()和exec()设置管道。

请注意,步骤(1)和(2)始终通过exec()移至下一步。

Python解释器的stdin和stdout都是通向C程序的管道。 C程序将任何东西从stdin转发到管道,而将任何东西从它转发到stdout的管道以及各种日志文件/服务转发出去。

现在,如果我在Python脚本中启动调试器。它可以正常工作,只是箭头键不起作用。我的理解是,这是通过GNU readline()处理的,但是对于我来说,尚不清楚要使上下键正常工作需要做什么。

是bash处理终端的输出格式吗?由于我在Docker入口点shell脚本中执行了C程序,因此不再运行bash解释器。

有人知道如何解决这个问题吗?

编辑:我目前将TERM,COLORTERM和SHELL环境变量的值从主机以及LS_COLORS转移到主机的python程序中。

0 个答案:

没有答案