mirror of
https://github.com/denoland/deno.git
synced 2024-11-01 09:24:20 -04:00
1.7 KiB
1.7 KiB
Run subprocess
Example:
// create subprocess
const p = Deno.run({
cmd: ["echo", "hello"],
});
// await its completion
await p.status();
Run it:
$ 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
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.
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:
$ deno run --allow-run ./subprocess.ts <somefile>
[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)