gpt4 book ai didi

python - 有没有类似 Python 的 pty.fork for Ruby 的东西?

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:36 26 4
gpt4 key购买 nike

我正在尝试将如下所示的一些 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-forkCreate 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com