Dart 不缓冲进程标准输出(告诉进程它是来自终端的 运行)

Dart don't buffer process stdout (tell process that it is running from a terminal)

我试图在 dart 中 运行 二进制文件宽度 Process.start 并将其输出重定向到 stdout 和管道 stdin 到进程。

这是我的代码:

import 'dart:io';
import 'dart:convert';

main() async {
  Process.start('./test.bin', []).then((p) {
    p.stdout.listen((bytes) {
      stdout.add(bytes);
      stdout.flush();
    });
    stdin.pipe(p.stdin);
  });
}

问题是它只在进程终止后刷新进程的标准输出。

在互联网上搜索后我发现:“这是由 libc 引起的,它在未连接到终端时默认将 stdout int 缓冲模式。”

如何从终端告诉进程它正在 运行ning?

我的这个项目的目标是在 web 应用程序中有一个终端,它与后端的这个过程 运行ning 交互,所以它将 运行ning 在终端上,但过程是显然没有意识到这一点。

我正在回答我自己的问题,以防有人发现这个 post。

我最终在这个库的帮助下用 nodejs 编写了后端 (https://www.npmjs.com/package/node-pty)

但我也找到了类似的 dart 库 (https://pub.dev/packages/pty)