【问题标题】:Node wrapper to start a terminal application like vim, emacs, tmux用于启动终端应用程序的节点包装器,如 vim、emacs、tmux
【发布时间】:2019-01-06 03:43:30
【问题描述】:

TLDR;如何从终端运行节点进程,从节点启动进程,退出节点进程并将进程附加到父终端?

我正在编写一个节点终端应用程序,它应该以启动一个新的终端应用程序结束(例如vimemacstmux)。我希望这个应用程序像在启动节点应用程序的终端中手动执行一样运行。

我当前对tmux解决方法是运行节点应用程序,它会在应用程序存在之前建立一个新的tmux 会话并回显tmux attach-session 命令。然后,用户可以在终端中手动键入此命令并执行它。现在 tmux 会话运行 attached 到终端。

我想将 attach 命令移到节点应用程序中,但最终结果相同。 IE。节点应用程序终止,tmux 会话连接到终端运行。在我看来,这似乎需要对emacsvim 等应用程序执行相同的操作。在这些应用程序中,我无法解耦设置和附加。 (据我所知,vimemacs 可以处理这种解耦,我很想知道,但最初的问题要求为任何终端应用程序提供通用解决方案。

attached,我的意思是好像命令/程序是在终端中手动执行的。

【问题讨论】:

  • 根据您的描述,您正在寻找 POSIX exec,它将当前进程替换为另一个进程。 Node 没有实现它,但你很幸运 - 有一个模块 kexec,可以让你使用它。
  • @Amadan 太好了,效果很好:D 你想把它变成一个答案,以便我可以将它标记为已接受吗?如果没有,我可以自己用例子写出答案。 :)
  • 好的,继续。

标签: node.js vim emacs terminal tmux


【解决方案1】:

正如@Amadan 上面评论的那样,POSIX exec 解决了这个问题。此解决方案不适用于 Windows。

以下 sn-p 显示了如何使用 kexec 模块执行此操作的示例。

const kexec = require("kexec");

kexec("emacs -nw");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2016-09-30
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多