runInteractive method
Start an interactive process (returns the raw Process).
Implementation
Future<Process> runInteractive(ProcessConfig config) async {
final process = await Process.start(
config.command,
config.args,
workingDirectory: config.workDir,
environment: config.env,
runInShell: config.runInShell,
mode: ProcessStartMode.inheritStdio,
);
final pid = process.pid;
_processes[pid] = process;
_processInfo[pid] = ProcessInfo(
pid: pid,
command: config.fullCommand,
startTime: DateTime.now(),
);
_eventController.add(ProcessStarted(pid, config.fullCommand));
// Track exit
process.exitCode.then((code) {
_processInfo[pid]?.status = ProcessStatus.exited;
_processes.remove(pid);
_eventController.add(ProcessExited(pid, code));
});
return process;
}