- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试将如下所示的一些 Python 代码移植到 Ruby:
import pty
pid, fd = pty.fork
if pid == 0:
# figure out what to launch
cmd = get_command_based_on_user_input()
# now replace the forked process with the command
os.exec(cmd)
else:
# read and write to fd like a terminal
因为我需要像终端一样读写子进程,我明白我应该使用 Ruby 的 PTY 模块来代替 Kernel.fork。但它似乎没有等效的 fork 方法;我必须将命令作为字符串传递。这是我最接近 Python 功能的方法:
require 'pty'
# The Ruby executable, ready to execute some codes
RUBY = %Q|/proc/#{Process.id}/exe -e "%s"|
# A small Ruby program which will eventually replace itself with another program. Very meta.
cmd = "cmd=get_command_based_on_user_input(); exec(cmd)"
r, w, pid = PTY.spawn(RUBY % cmd)
# Read and write from r and w
显然其中一些是特定于 Linux 的,这很好。显然有些是伪代码,但这是我能找到的唯一方法,而且我只有 80% 的把握它无论如何都会起作用。 Ruby 肯定有更干净的东西吗?
重要的是“get_command_based_on_user_input()”不会阻塞父进程,这就是我将其卡在子进程中的原因。
最佳答案
您可能正在寻找 http://ruby-doc.org/stdlib-1.9.2/libdoc/pty/rdoc/PTY.html , http://www.ruby-doc.org/core-1.9.3/Process.html#method-c-fork和 Create a daemon with double-fork in Ruby .
我将使用主进程打开一个 PTY,使用 STDIN.reopen 将子进程 fork 并重新附加到所述 PTY。
关于python - 有没有类似 Python 的 pty.fork for Ruby 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7393461/
我正在尝试使用库 node-pty在一个使用 vue-cli 搭建的项目中。当我启动程序时,我收到以下错误: error in ./node_modules/node-pty/build/Releas
我打开了一个 issue in creack/pty for this question ,但实际上我认为它可能属于这里,因为它可能更多地与我对库的使用有关,而不是库有任何问题。 我正在使用 webs
我一直在阅读本页示例中的 ptys:http://www.rkoucha.fr/tech_corner/pty_pdip.html .我有两个问题: 使用 pty 和使用管道之间的区别或最重要的区别是
我正在尝试向 ruby-newt 模块添加一些自动化测试。我的代码似乎可以工作,但仍然需要在终端手动点击 ENTER 才能完成。 例如在下面的代码中,\t会切换到下一个按钮,\r会按下按钮,两个命令都
我试图在代表 PTY 的文件描述符上设置读取超时。我在 termios 中设置了 VMIN = 0 和 VTIME = 10,我希望在字符可用时返回,或者如果没有字符可用则在一秒钟后返回。但是,我的程
我正在编写一个程序来创建 pty,然后 fork 并执行 ssh以 pty 的从属端作为其 stdin 的命令。完整的源代码在这里。 using namespace std; #include #i
我在尝试使用 Node 安装 pty.js 时遇到了一个不寻常的问题: 如果我运行 npm install pty.js 我收到这个错误: > pty.js@0.3.1 install /Use
我一直在用 c++ 编写一个程序,它可以 fork 一个 pty。一切顺利,除了一件事:当 root 运行程序时,pty 以 root 用户身份登录。同样,如果用户“x”运行该程序,则新的 pty 将
我有一个脚本,如果它在 tty 上,它会打印彩色输出。他们中的一堆并行执行,所以我不能把他们的标准输出到 tty。我也无法控制脚本代码(强制着色),所以我想通过 pty 伪造它。我的代码: invoc
我有一个特殊情况,我想伪造一个 tty 到在 ThreadPoolExecutor 中运行的子进程(想想 xargs -p)并捕获输出. 我创建了以下似乎串行运行良好的: import context
我正在编写测试脚本,需要在后台每隔一段时间收集“free -m”输出。但是,watch cmd 发送控制序列以删除旧输出,认为它在终端中。但我不想要那样,我想要贯穿整个过程的值(value)。这可能吗
我正在打开一个 PTY(在 Python/Linux 中)并写入它。我可以通过 minicom 完美地读取它。但是,我无法在另一个 Python(或 C++)程序中读取它。这是一个最小化的示例: pr
我编写了一个嵌入式应用程序(vt52 终端仿真器),在基于 Linux ROM 的系统上运行,没有内置 ptys;和Unix98坏了。但由于我必须有 pty 才能使终端工作...我手动将旧式 BSD
我正在尝试使用 Node 进程来启动交互式 docker session ,然后自动执行一些命令: var spawn = require('pty.js').spawn; var proc = sp
我正在尝试制作一个小模块,它打开 ssh 连接并允许通过 ssh 发送命令并返回命令的输出。因此,应该只有一个 ssh 连接(这样多个命令就不会导致自动阻止)。我知道 paramiko,但我无法使用它
我是这样创建的 pty 设备的所有者权限是crw-w---- mknod pty1 c 1 1 cat > pty1 告诉我不允许操作。 我稍后要做的是使用 open 从程序打开文件并调用 write
这个问题在这里已经有了答案: How to make output of any shell command unbuffered? (5 个答案) 关闭 9 年前。 我正在寻找一种方法来欺骗 Li
当使用 PTY 主/从对控制进程时,我想向相关进程指示 stdin 已关闭并且我没有更多内容要发送,但我仍想接收进程的输出。 要注意的是,我只有一个文件描述符(PTY“master”),它处理来自子进
我正在使用 pty 读取非阻塞进程的标准输出,如下所示: import os import pty import subprocess master, slave = pty.openpty() p
我编写了一个简单的包装器脚本,用于在命令失败时重复命令,称为 retry.py .但是,因为我想查看子命令的输出,所以我不得不使用一些 pty 技巧。这适用于 rsync 等程序,但 scp 等其他程
我是一名优秀的程序员,十分优秀!