runInteractive method

Future<Process> runInteractive(
  1. ProcessConfig config
)

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;
}