Files
bun.sh/test/js/node/readline/stdin-pause-child-reads.mjs
Jarred Sumner b3cfaab07f Fix: after pausing stdin, a subprocess should be able to read from stdin (#23341)
Fixes #23333, Fixes #13978

### What does this PR do?

### How did you verify your code works?

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: pfg <pfg@pfg.pw>
Co-authored-by: Zack Radisic <zack@theradisic.com>
2025-10-09 19:04:41 -07:00

42 lines
1.1 KiB
JavaScript

import { spawn } from "node:child_process";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = dirname(fileURLToPath(import.meta.url));
process.stdin.setRawMode(true);
process.stdin.on("data", chunk => {
const chunkStr = chunk.toString("utf-8");
console.log("PARENT: received " + JSON.stringify(chunkStr));
if (chunkStr.includes("\x03")) {
console.log("PARENT: exiting.");
process.stdin.pause();
process.stdin.removeAllListeners();
process.stdin.unref();
console.log("%ready%");
}
if (!chunkStr.includes("\n") && !chunkStr.includes("\r")) {
console.log("%ready%");
return;
}
console.log("PARENT: pause");
process.stdin.pause();
process.stdin.setRawMode(false);
const childScript = join(__dirname, "child-reader.mjs");
const child = spawn(process.execPath, [childScript], { stdio: "inherit" });
child.on("exit", code => {
console.log("PARENT: child exited with code " + code + ". reading again.");
process.stdin.resume();
process.stdin.setRawMode(true);
console.log("%ready%");
});
});
console.log("PARENT: reading");
console.log("%ready%");