我正在尝试将我的一个小型 python 脚本移植到 nim。核心是对 fzf 的调用:
fzf = subprocess.Popen(["fzf"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = fzf.communicate(some_data)
据我了解,fzf open/dev/tty
可以与用户进行交互,并使用 stdin/stdout 与调用它的程序进行通信。对应的 nim 代码:
var p = startProcess(path_to_fzf)
var stream = p.inputStream()
stream.write(some_data)
stream.flush()
但在我的 nim 版本中,没有出现 fzf TUI。但是会读取终端的输入,因为根据我的输入选择了正确的项目。
我不知道为什么会这样。我认为 nim 可能会创建一个 PTYstartProcess
但/proc/sys/kernel/pty/nr
不会增加,所以我认为情况并非如此。我尝试编译,-d:useFork
因为.. 不知道为什么要修复它,但它没有。据我了解 fzf/terminal/tty 不应该真的有 nim 可以做的事情来阻止 fzf 写入/dev/tty
. 或者也许 python 做了一些我不知道的事情会触发 fzf 来显示它的 TUI?
所以我的问题是如何说服 fzf 从 nim 显示其 TUI(以及为什么/如何还没有)。