У меня есть программа dart, которая называется file.dart, вот так:
import 'dart:io';
import 'dart:convert';
main() {
final file = Directory.current.path + '/file.lua';
Process.start('lua', [file]).then((Process process) {
print('opened process');
process.stdout.pipe(stdout);
process.stdin.add([4]);
process.stdin.flush().then((blah) => print('flushed'));
});
}
У меня есть программа lua, которая называется file.lua, вот так:
print('starting to read')
local data = io.stdin:read()
print('i read it ', data)
когда я запускаю программу dart, вот что происходит:
$ dart file.dart
opened process
flushed
starting to read
тогда он просто сидит там навсегда. чтение lua блокирует и никогда не забирает байты, записанные процессом dart.
Я отложил процесс дротика, чтобы он записал и сбрасывал секунду. выходной пробег был
$ dart file.dart
opened process
starting to read
flushed
но он все еще зависал навсегда.
Итак, у меня есть 2 вопроса:
1) Почему процесс lua не берет байт, записанный процессом dart?
2) Есть ли супер-простой способ сделать чтение lua неблокирующим? Так что Луа будет опрашивать вместо блока.
Пожалуйста, укажите номер вопроса, на который вы отвечаете, когда отвечаете на него. Спасибо!