【问题标题】:How do i pass on control on to different terminal tab using perl?如何使用 perl 将控制权传递给不同的终端选项卡?
【发布时间】:2014-12-01 10:39:48
【问题描述】:
我正在尝试自动化一个场景,在该场景中,我打开了一个终端窗口,其中打开了多个选项卡。我能够在选项卡之间迁移,但我的问题是如何在另一个选项卡中运行我的 perl 脚本时将控制权传递给另一个终端选项卡。
示例: 我打开了一个终端,Tab1、Tab2、Tab3、Tab4 在同一个终端中打开,我在 Tab3 中运行 perl 脚本,我想将一些命令传递到 Tab1。你能告诉我我该怎么做吗?
我使用 GUI 工具在选项卡之间切换 X11::GUITest 并使用键盘快捷键在选项卡之间切换,欢迎任何替代建议,我的最终目标是将控制权传递给不同的选项卡。
【问题讨论】:
标签:
python
perl
ubuntu
automation
perl-module
【解决方案1】:
要理解的主要事情是每个选项卡都有一个不同的终端运行实例,更重要的是一个不同的 shell 实例(只是想我会提到,因为你似乎并没有从你的选择中清楚地知道这一点)。因此,在这种情况下“传递控制权”很可能需要进程间通信 (IPC)。
现在,这开辟了一系列可能性。例如,您可以在目标 shell(选项卡)中运行 python/perl 脚本,以在 unix 套接字上侦听文本形式的命令,然后脚本可以执行这些命令。在 Python 中,为此您有模块 subprocess (call, Popen) 和 os (exec*)。如果您必须将控制权转移回调用进程,那么我建议您使用子进程,因为您也可以发回返回码。
在选项卡之间切换是一个不同的操作,对调用/被调用进程没有任何影响。而且你已经提到了你打算如何做到这一点。