---
id: process
title: Process
order: 10
---
Child processes, started and polled — what a launcher is made of. Process.spawn starts a program directly, with no shell, and returns at once; each frame Process.poll answers -1 while the child runs and its exit code once it has ended, so a crash is a non-zero code the game can act on. Process.kill ends a child and Process.free lets a handle go. Pair it with App.window_hide to step aside while the child runs.
The child inherits the environment and the working directory. posix_spawn on macOS; CreateProcessW on Windows, with each argument quoted by the MSVC rules and no console window. Like Http.* it is out-of-band and must never feed the deterministic lockstep/replay simulation.