doc: recommend events.once to manage 'close' event · nodejs/node@a25d76c

@@ -29,6 +29,7 @@ ls.on('close', (code) => {

29293030

```mjs

3131

import { spawn } from 'node:child_process';

32+

import { once } from 'node:events';

3233

const ls = spawn('ls', ['-lh', '/usr']);

33343435

ls.stdout.on('data', (data) => {

@@ -39,9 +40,8 @@ ls.stderr.on('data', (data) => {

3940

console.error(`stderr: ${data}`);

4041

});

414242-

ls.on('close', (code) => {

43-

console.log(`child process exited with code ${code}`);

44-

});

43+

const [code] = await once(ls, 'close');

44+

console.log(`child process exited with code ${code}`);

4545

```

46464747

By default, pipes for `stdin`, `stdout`, and `stderr` are established between

@@ -772,6 +772,7 @@ ls.on('close', (code) => {

772772773773

```mjs

774774

import { spawn } from 'node:child_process';

775+

import { once } from 'node:events';

775776

const ls = spawn('ls', ['-lh', '/usr']);

776777777778

ls.stdout.on('data', (data) => {

@@ -782,9 +783,8 @@ ls.stderr.on('data', (data) => {

782783

console.error(`stderr: ${data}`);

783784

});

784785785-

ls.on('close', (code) => {

786-

console.log(`child process exited with code ${code}`);

787-

});

786+

const [code] = await once(ls, 'close');

787+

console.log(`child process exited with code ${code}`);

788788

```

789789790790

Example: A very elaborate way to run `ps ax | grep ssh`

@@ -1483,6 +1483,7 @@ ls.on('exit', (code) => {

1483148314841484

```mjs

14851485

import { spawn } from 'node:child_process';

1486+

import { once } from 'node:events';

14861487

const ls = spawn('ls', ['-lh', '/usr']);

1487148814881489

ls.stdout.on('data', (data) => {

@@ -1496,6 +1497,9 @@ ls.on('close', (code) => {

14961497

ls.on('exit', (code) => {

14971498

console.log(`child process exited with code ${code}`);

14981499

});

1500+1501+

const [code] = await once(ls, 'close');

1502+

console.log(`child process close all stdio with code ${code}`);

14991503

```

1500150415011505

### Event: `'disconnect'`