如何刷新nodejs child_process stdin.write

2024-05-03

我需要在服务器端为客户端运行一个“C”程序。这个程序可以是交互式的。
我正在使用 Node.js child_process 类。但我在这里看到一个问题:由于我需要保持程序交互,因此客户端和 Node.js 服务器之间会来回交换消息。

1.程序说:输入x的值:
将此消息发送给客户端并获取一些值作为输入
2.当Nodejs服务器收到客户端的输入时,它会执行child_process.stdin.write

但问题是,在我标记流的末尾之前,程序不会执行。有什么办法可以解决这个问题?
就像当用户可用时将值刷新到程序中一样。

Update :

test1.c
#包括

int main() {

int x, y;

printf("Enter x : ");
fflush(stdout);
scanf("%d", &x);

printf("Enter y : ");
fflush(stdout);
scanf("%d", &y);

printf("Value entered y is %d\n", y);
printf("Value entered x is %d", x);
}

编译以上代码,生成可执行文件a.out

var spawn = require('child_process').spawn;
var count = 0;
var exec = spawn('./a.out');


exec.on('error', function (err){
   console.log("Error" + err );
});

exec.stdout.on('data', function(data){
    console.log("in stdout.on.data : " + data.toString());
    if (count == 0) {
        exec.stdin.write('44\n');
        count++;
    }
    else if (count == 1) {
        exec.stdin.write('54');
        count++;
    }
    if (count == 2) {
        exec.stdin.end();
    }

});

exec.stderr.on('data', function(data) {
    console.log("in stderr.on.data : " + data);
});

exec.on('close', function (code) {
    if (code != 0) {
        console.log("Program ended with a error code : " + code);
    }

});

在上面的node.js代码中如果我评论exec.stdin.end();它不起作用,它会等到流关闭。我该如何解决这个问题?由于我希望客户能够持续互动,因此我很难预测何时结束直播。


您忘记“按 Enter”。

exec.stdin.write('54' + "\n");
OR
exec.stdin.write("54\n");

您还可以查找一些有关JavaScript 中的引号 https://stackoverflow.com/questions/242813/when-to-use-double-or-single-quotes-in-javascript

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何刷新nodejs child_process stdin.write 的相关文章

随机推荐

  • jquery/javascript setInterval

    目前我正在开发一个用户通知提醒消息功能 我设法使用setInterval控制我的 Ajax 调用 检查是否有用户的通知消息 但我的问题是我只想要通知消息 在页面上出现一次 现在它在屏幕上显示多个通知警报消息 我知道你可以使用setTimeo
  • Android Canvas.DrawBitmap 没有模糊/抗锯齿?

    我正在尝试使用精灵 或非常像素化的角色 背景等 制作一个Android游戏 我把它们画在画布上 就像这样 matrix preScale xrat yrat canvas drawBitmap img matrix null 其中 img
  • 如何获取android中listview特定项目的id?

    我在用Listview并设置多个项目 每个项目都有喜欢 分享和评论选项 实际上我已经获取了 Item Id 并且还setText of TextView 成功了 但无法在特定项目的 Like 按钮单击事件上获取项目 ID 如何获取每个项目的
  • Android 中如何调用 getContentResolver() ?

    我想知道当时的背景getContentResolver 叫做 我有一个这样的场景 我有一个调用方法的活动 AmyFunc B 类 这不是一项活动 所以 在B类中我必须使用getContentResolver 我直接打电话getContent
  • 使用指令将类添加到宿主元素[重复]

    这个问题在这里已经有答案了 我目前正在学习 Angular 2 我了解如何使用 AngularRenderer设置一个ElementStyle 但现在我想使用Renderer方法 setElementClass renderElement
  • 获取 Spark 中组的最后一个值

    我有一个 SparkR DataFrame 如下所示 Create R data frame custId lt c rep 1001 5 rep 1002 3 1003 date lt c 2013 08 01 2014 01 01 20
  • Java 中的原始数据类型是线程安全的吗

    原始数据类型是这样的吗int shortJava 线程安全 我执行了以下代码 有时看不到预期结果 500 public class SampleThree extends Thread static long wakeUpTime Syst
  • CSS - 当 Margin-Top 存在时,Margin-Bottom 被忽略

    我有一个场景 我有多个 DIV 与 margin top 和 margin bottom 堆叠在一起 但我发现当我有 margin top 时 margin bottom 被忽略 我无法解释这是如何发生的 html div class bo
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • 使用java进行JSON模式验证[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为返回 JSON 对象的 java webapp 编写一些验收测试 我想验证返回的 JSON 是否针对架构进行验证 任何人都可以建议
  • 在 npm 中安装 js beautify 时`没有这样的文件或目录`

    当我使用时出现此错误npm g install js beautify npm ERR path home developer software nodejs lib node modules js beautify js bin css
  • Rails 加载完成后运行代码?

    我有一个定期任务需要每分钟执行一次 使用delayed job 我希望 Rails 在加载完成后立即自动将其排队 如果系统中尚不存在此类任务 对于我来说 在整个 Rails 引导流程结束时运行一些代码的好地方是什么 有人建议 config
  • C# Collection 的最大容量在哪里定义?

    我尝试向一个Collection添加大量元素 每个元素都是简单的数据传输对象 具有基本数据类型的五个属性 没有什么特别的 在循环中添加新条目时 我总是收到 OutOfMemoryException 有趣的是 当我尝试添加第 8388608
  • 在Python中沿特定轴广播操作

    在Python中 假设我有一个正方形numpy matrix X 尺寸n x n我有一个numpy vector a尺寸的n 很简单 我想执行广播减法X a 但我希望能够指定沿哪个维度 以便我可以指定沿轴 0 或轴 1 进行减法 如何指定轴
  • Powershell逐字读取文本文件

    因此 我试图计算文本文件的单词数 但是当我执行 get content 时 数组会逐个字母地读取它们 因此它不允许我逐个单词地比较它们 我希望你们能帮助我 清除主机 功能 function Get Articles foreach Word
  • 如何创建要添加到 JavaScript 对象变量的动态键 [重复]

    这个问题在这里已经有答案了 我正在尝试类似的事情 但这个例子不起作用 jsObj for var i 1 i lt 10 i jsObj key i example 1 我该怎么做才能制作这样的动态密钥 方括号 jsObj key i ex
  • GraphQL 中的二进制

    根据关于标量的文档 https graphql org learn schema scalar types在 GraphQL 中 到目前为止还不支持二进制数据 根据上面的页面 可以定义自己的类型 如何在 GraphQL 中实现二进制标量 我
  • 在 Ansible 中检查已安装的 yum 包/rpm 版本并使用它的最佳方法

    我已经在 CentOS 7 上尝试使用 Ansible 2 0 0 2 我试图从已安装的 rpm yum 软件包中获取版本 但在运行脚本时遇到警告消息 安塞布尔脚本 name Get version of RPM shell yum lis
  • NHibernate 会话线程安全

    我已经使用 NHibernate 一段时间了 并且不时发现如果我尝试同时请求两个页面 或尽可能接近 偶尔会出错 所以我认为这是因为我的会话管理不是线程安全的 我以为这是我的课 所以我尝试使用与这篇博客文章不同的方法http pwigle w
  • 如何刷新nodejs child_process stdin.write

    我需要在服务器端为客户端运行一个 C 程序 这个程序可以是交互式的 我正在使用 Node js child process 类 但我在这里看到一个问题 由于我需要保持程序交互 因此客户端和 Node js 服务器之间会来回交换消息 1 程序