LocalShell class final
Minimal local shell backed by dart:io Process.
Executes commands via sh -c (POSIX) or cmd /c (Windows). Streaming
callbacks receive output chunks as they arrive; timeout and cancellation
kill the process. This is the v1 shell — pi's richer bash-discovery logic
is deferred until a tool actually needs it.
- Implemented types
Constructors
- LocalShell()
-
Creates a LocalShell.
const
Properties
- backgroundJobsSupported → bool
-
Whether startShellJob actually works here. Decorators forward their
delegate's answer, so wrapping an env never fakes the capability.
no setteroverride
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
exec(
String command, {ShellExecOptions? options}) → Future< Result< ShellExecResult, ExecutionError> > -
Executes a shell command. Must never throw: all failures are encoded in
the returned Result.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
startShellJob(
String command, {required String id, required String logPath, ShellExecOptions? options}) → Future< Result< ShellJob, ExecutionError> > -
Starts
commanddetached: stdout/stderr append tologPathand the returned ShellJob keeps running until it exits or is stopped. ShellExecOptions.timeout and ShellExecOptions.cancelToken still apply (both stop the job).override -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Properties
- jobsGetOwnProcessGroup → bool
-
Whether background jobs start as their own session and process-group
leader (
setsid sh -c …, posix only): stop() then signals the whole tree with one group kill, and the boot sweep can recognize a job's leftover group after a crash (issue #517). setsid execs sh in place — no fork — so the tracked pid IS the group id.no setter - ownProcessGroupOverride ↔ bool?
-
Test seam: pin the own-process-group decision before the first job of
a test starts. Null = probe the host once.
getter/setter pair
Static Methods
-
killTree(
int pid, {required bool ownGroup}) → Future< void> -
Terminates
pid's whole process tree (issue #517): the process group when the job is its own group leader (one signal — also covers children forked while the kill runs), otherwise a livepsdescendant walk; Windows delegates totaskkill /T. TERM first, a short grace, then KILL. Best-effort: never throws.