gpt4 book ai didi

dart - 从另一个 Dart 程序运行交互式 Dart 程序

转载 作者:行者123 更新时间:2023-12-04 14:29:07 31 4
gpt4 key购买 nike

我有一个相当冗长的命令行程序,它需要用户输入参数,然后使用这些参数进行处理。我想做的是将程序拆分为交互式和非交互式。我试图这样做,并打算让非交互式程序“调用”交互式程序并使用结果(参数),基于这些参数进行处理。程序的非交互式部分在处理时在控制台上显示结果。我查看了 Process.run 和 Process.start,但显然它们不是那样运行的。还有另一个类似的问题,大约 12 个月大,所以我认为值得再问一次。

最佳答案

I have looked at Process.run and Process.start, but apparently they don't function that way.


Process.start是你想要的。它可以做你想做的事,但如果你还没有,你必须对异步编程变得更加熟悉。您将生成进程,然后异步读取和写入生成的进程 stdout 和 stdin 流。

您的交互式程序可以执行以下操作:

// interactive.dart
import 'dart:io';

main() {
var input = stdin.readLineSync();
print(input.toUpperCase());
}

它正在使用 stdin从命令行读取输入。然后使用正则 print()输出处理结果.

非交互式脚本可以使用以下内容生成和驱动它:

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

main() {
Process.start("dart", ["interactive.dart"]).then((process) {
process.stdin.writeln("this is the input");

UTF8.decoder.fuse(new LineSplitter()).bind(process.stdout).listen((line) {
print(line);
});
});
}

它使用 Process.start生成交互式脚本。它使用 process.stdin 写入它.要读取结果输出,它必须跳过一些圈子以将原始字节输出转换为每一行的字符串,但这是基本思想。

关于dart - 从另一个 Dart 程序运行交互式 Dart 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701856/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com