process_io library

Process-control primitives that depend on dart:io + dart:ffi + package:win32 and therefore do not work on the web. Import this in addition to package:serverpod_shared/serverpod_shared.dart when you need isProcessAlive / readProcessExecutable / InterProcessLock.

Kept out of the main barrel so dart2js / dart2wasm consumers (e.g. browser code transitively reaching us via serverpod_service_client) don't pull package:win32's external Pointer<...> types into the compile graph.

Classes

InterProcessLock
A cross-process, cross-isolate advisory lock backed by an atomically created lock file (O_CREAT | O_EXCL).
StaleLockPolicy
Decides whether a waiter may reclaim an existing InterProcessLock file whose holder appears to have abandoned it.

Properties

dartExecutablePath String
The dart executable inside getSdkPath - the real SDK binary, resolved through version-manager shims (puro/fvm/asdf). Spawn subprocesses with this rather than a PATH dart when they must receive signals: shell shims do not forward them.
no setter
sharedTestDir Directory
Returns a path that is shared across all test files within a single dart test invocation, but unique per invocation.
no setter

Functions

buildServerpodCli({required String buildRoot, String? serverpodHome}) Future<String>
Builds the serverpod repository's in-repo CLI once and returns the path to the executable (<buildRoot>/bundle/bin/serverpod_cli).
findServerpodHome({Directory? from}) String
Locates the serverpod repository root: walks up from from (defaults to the current directory) until tools/serverpod_cli is found.
getSdkPath() String
Get the Dart SDK path.
isProcessAlive(int pid) bool
Whether pid currently refers to a live process on this host.
readProcessExecutable(int pid) String?
Absolute path to the executable image of the process at pid, or null when the process is gone, inaccessible, or the host has no cheap way to resolve it.