以下のテストでは、less pager コマンドを実行し、ユーザーが終了すると戻ります。問題は、ユーザーの入力を待たずに、ファイル全体を一覧表示して終了することです。プラットフォーム: xubuntu 12.04、Dart Editor ビルド: 13049。
import 'dart:io';
void main() {
shell('less', ['/etc/mime.types'], (exitCode) => exit(exitCode));
}
void shell(String cmd, List<String> opts, void onExit(int exitCode)) {
var p = Process.start(cmd, opts);
p.stdout.pipe(stdout); // Process output to stdout.
stdin.pipe(p.stdin); // stdin to process input.
p.onExit = (exitCode) {
p.close();
onExit(exitCode);
};
}
次の CoffeeScript 関数 (nodejs I/O を使用) が機能します。
shell = (cmd, opts, callback) ->
process.stdin.pause()
child = spawn cmd, opts, customFds: [0, 1, 2]
child.on 'exit', (code) ->
process.stdin.resume()
callback code
Dartでこれを機能させるにはどうすればよいですか?