summaryrefslogtreecommitdiff
path: root/cli/args/mod.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-12-13 15:44:16 +0530
committerGitHub <noreply@github.com>2023-12-13 11:14:16 +0100
commit5a91a065b882215dde209baf626247e54c21a392 (patch)
tree192cb8b3b0a4037453b5fd5b2a60e4d52d4543a8 /cli/args/mod.rs
parentbbf8f69cb979be0f36c38ae52b1588e648b3252e (diff)
fix: implement child_process IPC (#21490)
This PR implements the Node child_process IPC functionality in Deno on Unix systems. For `fd > 2` a duplex unix pipe is set up between the parent and child processes. Currently implements data passing via the channel in the JSON serialization format.
Diffstat (limited to 'cli/args/mod.rs')
-rw-r--r--cli/args/mod.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index c65745e29..17711371a 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -939,6 +939,17 @@ impl CliOptions {
.map(Some)
}
+ pub fn node_ipc_fd(&self) -> Option<i32> {
+ let maybe_node_channel_fd = std::env::var("DENO_CHANNEL_FD").ok();
+ if let Some(node_channel_fd) = maybe_node_channel_fd {
+ // Remove so that child processes don't inherit this environment variable.
+ std::env::remove_var("DENO_CHANNEL_FD");
+ node_channel_fd.parse::<i32>().ok()
+ } else {
+ None
+ }
+ }
+
pub fn resolve_main_module(&self) -> Result<ModuleSpecifier, AnyError> {
match &self.flags.subcommand {
DenoSubcommand::Bundle(bundle_flags) => {