## Run subprocess [API Reference](https://doc.deno.land/https/github.com/denoland/deno/releases/latest/download/lib.deno.d.ts#Deno.run) Example: ```ts // create subprocess const p = Deno.run({ cmd: ["echo", "hello"], }); // await its completion await p.status(); ``` Run it: ```shell $ deno run --allow-run ./subprocess_simple.ts hello ``` Here a function is assigned to `window.onload`. This function is called after the main script is loaded. This is the same as [onload](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload) of the browsers, and it can be used as the main entrypoint. By default when you use `Deno.run()` subprocess inherits `stdin`, `stdout` and `stderr` of parent process. If you want to communicate with started subprocess you can use `"piped"` option. ```ts const fileNames = Deno.args; const p = Deno.run({ cmd: [ "deno", "run", "--allow-read", "https://deno.land/std@$STD_VERSION/examples/cat.ts", ...fileNames, ], stdout: "piped", stderr: "piped", }); const { code } = await p.status(); if (code === 0) { const rawOutput = await p.output(); await Deno.stdout.write(rawOutput); } else { const rawError = await p.stderrOutput(); const errorString = new TextDecoder().decode(rawError); console.log(errorString); } Deno.exit(code); ``` When you run it: ```shell $ deno run --allow-run ./subprocess.ts [file content] $ deno run --allow-run ./subprocess.ts non_existent_file.md Uncaught NotFound: No such file or directory (os error 2) at DenoError (deno/js/errors.ts:22:5) at maybeError (deno/js/errors.ts:41:12) at handleAsyncMsgFromRust (deno/js/dispatch.ts:27:17) ```