2015-09-23 19 views
0

我喜欢得到一个独特的终端窗口的可重用标识符我的节点应用程序(CLI)正在运行。我喜欢知道的原因是该应用程序在同一用户在多个终端同一时间。获取节点(cli-)应用程序的唯一可重用标识符同一用户在不同终端窗口中并行运行的标识符是什么?

有必要取回选择的数据为每个终端也越来越知道什么是对CLI-应用程序在运行不同的终端窗口中选择。

最好的方式来保存这将是隐藏的日志文件基本上由唯一的终端标识符命名。

[x]在process.platform === 'win32'上工作,每个cmd.exe都有自己的PID。

[]在process.platform === 'darwin'(Mac OS X)上工作时,PPID在所有终端窗口上都是相同的。

[] process.platform === 'freebsd' || 'linux' || 'sunos'工作我认为这也是同样的问题,这取决于您正在运行的GUI。

在终端上执行tty会给我不同的标识符,如/dev/ttys003有什么用处。

但试图从应用程序中获取此信息是不可能的,因为在child_process中执行此操作最终会在not a tty

应用程序本身的PID每次执行时都会发生变化。这在这种情况下没有帮助。父PID是相同的(但也在不同的终端中)。

设置env不会绑定到终端,而只会绑定到apps运行时。

有没有想法完成这件事?

回答

0

我得到了它自己:

SpoTTY是基于POSIX系统的解决方案。

页面上的例子有一个误导性的错误 - 用这个例子来完成它:

// A clone of the `tty` command 
var spotty = require('spotty'); 
var tty = spotty.tty(function(err, res) { 
    if (err) { 
     console.error("Error found: " + err.toString()) 
    } else { 
     return res; 
    } 
}) 

希望这可以帮助别人。