当前位置: 首页 > 面试题库 >

写到生成的进程stdin nodejs吗?

崔琦
2023-03-14
问题内容

我有一个要从另一个脚本运行的脚本。问题在于子脚本(进程)在继续之前需要用户输入。

var child = spawn('script');
child.stdin.setEncoding('utf8');
child.stdout.on('data', function (data) {
    console.log(data.toString().trim()); // tells me to input my data
    child.stdin.write('my data\n');
});

输入数据后,子脚本应继续执行,但挂在那里。

其实上面的代码对我有用。我在子脚本中使用commander.js提示用户采取措施。这是我对孩子的脚本提示的响应:

child.stdout.on('data', function (data) {
    switch (data.toString().trim()) {
        case 'Username:':
            child.stdin.write('user');
            break;
        case 'Password:':
            child.stdin.write('pass');
            break;
    }
});

假设可以使用相同的方法

var suppose = require('suppose');

suppose('script')
    .on('Username: ').respond('user')
    .on('Password: ').respond('pass')
.error(function (err) {
    console.log(err.message);
})
.end(function (code) {
    console.log(code);
    done();
});

问题答案:

您可以使用该包suppose。就像Unix
Expect一样
。完全公开,我是作者。

从Github页面上的示例中,您可以看到一个脚本编写NPM的示例:https : //github.com/jprichardson/node-
suppose

例:

var suppose = require('suppose')
suppose('script')
.on(/\w*/).respond('my data\n')
.end(function(code){
  console.log('Done: ' + code); 
})


 类似资料:
  • 问题内容: 这是功课 我正在开发一个项目,其中很小的一部分(非常小,一旦我开始工作,这基本上是该项目其余部分的前提条件)就是使用Go例程生成一些组合。 因此,我拥有的代码是: 我真的根本不明白这一点。如您所见,那里有一些讲师提供的伪代码,但是它的实现却使我不寒而栗。 示例I / O将如下所示: 如果字母为{0,1}并且密码为长度2,则它将需要生成{0,1,00,01,10,11}。 我感谢所有建议

  • 我有一个PHP脚本,我正在Ubuntu linux机器上运行。该脚本使用<code>pcntl_fork()</code>函数生成多个进程,并使用<code>pcntl _waitpid()</code>函数记录它们被杀死的情况。它经常生成这些进程(我估计大约40-50个/秒),但这些进程都会立即被杀死(我尝试了<code>exit()</code>和<code>posix_kill(${pid}

  • 所以,我刚刚将我的NVIDIA图形驱动程序(GeForce game ready驱动程序)更新到378.49,现在当我尝试构建任何Java项目时,我得到了这个错误: 有人知道解决这个问题的办法吗?

  • 问题内容: 我正在寻找一个完全由Java驱动的免费跨平台安装程序生成器(这意味着工作流和插件是用Java编写的)。理想情况下,安装程序应按需下载JRE,而不是将其直接捆绑到安装程序中。这样的东西已经存在了吗? 请注意,InstallAnywhere不再提供免费版本。 问题答案: IzPack 抗原 Launch4J 蚂蚁 Java服务包装器 提起Java安装程序 JSmooth VA安装 pack

  • 问题内容: 这似乎是一个基本问题,但是我找不到任何文档: 分叉和生成node.js进程有什么区别?我已经读过分叉是生成的一种特殊情况,但是使用它们的不同用例/重用分别是什么? 问题答案: Spawn是用于运行系统命令的命令。运行spawn时,会向其发送系统命令,该命令将在其自己的进程上运行,但不会在节点进程内执行任何其他代码。您可以为生成的进程添加侦听器,以允许您的代码与生成的进程进行交互,但是不

  • 问题内容: 我正在编写几个Java程序,在完成我想做的所有事情之后,需要在单独的JVM中终止/清理工作。为此,我将需要获取要创建的Java进程的PID。 问题答案: 在Windows和Unix上均可使用。您可以使用从Java程序中调用此命令。的样本输出如下 您可能需要对此进行解析,然后检查标准名称,然后从相应的行中获取pid。