Changes to process, added fork

This commit is contained in:
fkereki
2018-04-11 01:09:24 -03:00
parent 831d743e63
commit 52b5ee812d
5 changed files with 122 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
/* @flow */
const child_process = require("child_process");
const { promisify } = require("util");
child_process.exec = promisify(child_process.exec);
async function getDirectory(path: ?string) {
try {
const cmd = "ls -ld -1 *.js";
let stdout;
if (typeof path === "undefined") {
({ stdout } = await child_process.exec(cmd));
} else {
// $FlowFixMe: Flow doesn't understand "promisify()"
({ stdout } = await child_process.exec(cmd, { cwd: path }));
}
console.log("OUT", path || "");
console.log(stdout);
} catch (e) {
console.log("ERR", e.stderr);
}
}
getDirectory();
/*
OUT
-rw-r--r-- 1 fkereki users 3336 Apr 10 13:12 dbaccess.js
-rw-r--r-- 1 fkereki users 319 Apr 10 13:12 doroundmath.js
-rw-r--r-- 1 fkereki users 890 Apr 10 13:12 flowcomments.js
-rw-r--r-- 1 fkereki users 293 Apr 10 13:12 miniserver.js
-rw-r--r-- 1 fkereki users 751 Apr 10 13:12 process_exec.js
-rw-r--r-- 1 fkereki users 1311 Apr 10 13:12 promisify.js
-rw-r--r-- 1 fkereki users 828 Apr 10 13:12 roundmath.js
*/
getDirectory("/home/fkereki/MODERNJS/chapter03/flow-typed/npm");
/*
OUT /home/fkereki/MODERNJS/chapter03/flow-typed/npm
-rw-r--r-- 1 fkereki users 4791 Apr 9 12:52 axios_v0.18.x.js
-rw-r--r-- 1 fkereki users 3006 Mar 28 14:51 babel-cli_vx.x.x.js
-rw-r--r-- 1 fkereki users 3904 Apr 9 12:52 babel-eslint_vx.x.x.js
-rw-r--r-- 1 fkereki users 2760 Apr 9 12:52 babel-preset-env_vx.x.x.js
-rw-r--r-- 1 fkereki users 888 Apr 9 12:52 babel-preset-flow_vx.x.x.js
-rw-r--r-- 1 fkereki users 518 Apr 9 12:52 eslint-config-recommended_vx.x.x.js
-rw-r--r-- 1 fkereki users 14995 Apr 9 12:52 eslint-plugin-flowtype_vx.x.x.js
-rw-r--r-- 1 fkereki users 73344 Apr 9 12:52 eslint_vx.x.x.js
-rw-r--r-- 1 fkereki users 1889 Mar 28 14:51 fetch_vx.x.x.js
-rw-r--r-- 1 fkereki users 188 Apr 9 12:52 flow-bin_v0.x.x.js
-rw-r--r-- 1 fkereki users 13290 Apr 9 12:52 flow-coverage-report_vx.x.x.js
-rw-r--r-- 1 fkereki users 1091 Apr 9 12:52 flow-remove-types_vx.x.x.js
-rw-r--r-- 1 fkereki users 5763 Apr 9 12:52 flow-typed_vx.x.x.js
-rw-r--r-- 1 fkereki users 1009 Apr 9 12:52 mariasql_vx.x.x.js
-rw-r--r-- 1 fkereki users 0 Mar 28 14:51 moment_v2.3.x.js
-rw-r--r-- 1 fkereki users 5880 Apr 9 12:52 nodemon_vx.x.x.js
-rw-r--r-- 1 fkereki users 4786 Apr 9 12:52 prettier_v1.x.x.js
*/
+16
View File
@@ -0,0 +1,16 @@
/* @flow */
const path = require("path");
const { fork } = require("child_process");
console.log(path.resolve("out/process_dir.js"));
const child = fork(path.resolve("out/process_fork_dir.js"));
const filePath = "/home/fkereki";
child.send({ path: filePath });
child.on("message", data => {
console.log(String(data));
});
+14
View File
@@ -0,0 +1,14 @@
const fs = require("fs");
process.on("message", obj => {
console.log("GOT!", obj);
// Received a path to process
fs
.readdirSync(obj.path)
.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))
.filter(file => !file.startsWith("."))
.forEach(file => {
process.send(file);
});
});
+17
View File
@@ -0,0 +1,17 @@
/* @flow */
const path = require("path");
const { spawn } = require("child_process");
const child = spawn("node", [path.resolve("out/process_spawn_dir.js")]);
const filePath = "/home/fkereki";
child.stdin.write(filePath);
child.stdout.on("data", data => {
console.log(String(data));
});
child.stdout.on("end", () => {
child.kill();
});
+16
View File
@@ -0,0 +1,16 @@
const fs = require("fs");
process.stdin.resume();
process.stdin.on("data", path => {
// Received a path to process
fs
.readdirSync(path)
.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))
.filter(file => !file.startsWith("."))
.forEach(file => {
process.stdout.write(file + "\n");
});
process.stdout.end();
});