모듈 기본 모듈

모듈 child_process

자식 프로세스 관리 모듈

참조 방법:

1 2
var child_process = require("child_process"); var child = child_process.spawn("ls");

자식 프로세스를 생성할 때 options.stdio 옵션을 사용하여 부모 프로세스와 자식 프로세스 사이에 설정된 파이프라인을 구성합니다. 기본적으로 자식 프로세스의 stdin, stdout 및 stderr은 다음으로 리디렉션됩니다.ChildProcess개체의 해당 stdin, stdout 및 stderr 스트림입니다. 이것은 options.stdio를 ['pipe','pipe','pipe']로 설정하는 것과 같습니다.

편의를 위해 options.stdio는 다음 문자열 중 하나일 수 있습니다.

  • '파이프': ['파이프','파이프','파이프'](기본값)와 동일합니다.
  • '무시': ['무시','무시','무시']와 동일합니다.
  • '상속': ['상속', '상속', '상속'] 또는 [0, 1, 2]와 동일합니다.
  • 'pty': ['pty','pty','pty']와 동일합니다. 윈도우는 지원하지 않습니다.

그렇지 않으면 options.stdio의 값은 배열이어야 합니다(여기서 각 인덱스는 자식 프로세스의 파일 설명자에 해당함). 파일 디스크립터 0, 1 및 2는 각각 stdin, stdout 및 stderr에 해당합니다. 다른 파일 디스크립터는 상위 프로세스와 하위 프로세스 사이에 다른 파이프를 생성하도록 지정할 수 있습니다. 값은 다음 중 하나일 수 있습니다.

  1. '파이프': 자식 프로세스와 부모 프로세스 사이에 파이프를 만듭니다. 파이프의 부모는 child_process 개체의 stdio[fd] 속성으로 부모 프로세스에 노출됩니다. 파일 설명자 0, 1 및 2에 대해 생성된 파이프는 각각 stdin, stdout 및 stderr로 사용할 수도 있습니다.
  2. '무시': fibjs가 자식 프로세스의 파일 설명자를 무시하도록 지시합니다. fibjs는 생성된 프로세스에 대해 항상 파일 설명자 0, 1, 2를 열지만 파일 설명자를 '무시'로 설정하면 fibjs가 /dev/null을 열고 이를 자식 프로세스의 파일 설명자에 첨부할 수 있습니다.
  3. '상속': 해당 stdio를 부모 프로세스로 또는 부모 프로세스에서 전달합니다. 처음 세 위치에서 이것은 다음과 같습니다.process.stdin, process.stdout ~와 함께 process.stderr. 다른 위치에서는 '무시'와 동일합니다.
  4. 'pty': 자식 프로세스가 가상 터미널에서 실행됩니다. 현재는 stdin과 stdout만 유효합니다.
  5. 양의 정수: 정수 값은 현재 상위 프로세스에서 열려 있는 파일 설명자로 해석됩니다. 공유와 유사하게 자식 프로세스와 공유됩니다.Stream> 물체의 길. 들어오는 소켓은 Windows에서 지원되지 않습니다.
  6. null 또는 undefined: 기본값을 사용합니다. stdio 파일 디스크립터 0, 1 및 2(즉, stdin, stdout 및 stderr)의 경우 파이프가 생성됩니다. 파일 설명자 3 이상의 경우 기본값은 '무시'입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13
const { spawn } = require('child_process'); // 子进程使用父进程的 stdio。 spawn('prg', [], { stdio: 'inherit' }); // 衍生的子进程只共享 stderr。 spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });

nodejs를 동시에 사용하시는 분들은 주목해주세요.

  • fibjs는 child_process.exec(command, args)같은 이름의 api nodejs와 유사한 기능을 하지만 Windows에서는 실행 환경 매개변수로 cmd.exe 명령을 자동으로 수행하지 않습니다.
  • fibjs의 child_process.[spawn|exec|execFile|run]은 동기화/콜백 통합 비동기 스타일 함수입니다.
    • 마지막 매개변수가 함수가 아니면 동기식입니다.
    • 함수가 마지막 매개변수로 전달되면 비동기식입니다.
  • fibjs child_process.[exec|execFile]의 반환 결과는 동일한 이름의 nodejs API가 반환한 객체와 완전히 다른 객체입니다.
  • fibjs는 nodejs에 child_process.run해당 API 없습니다.

정적 함수

spawn

주어진 명령으로 자식 프로세스 해제

1 2 3
static ChildProcess child_process.spawn(String command, Array args, Object options = {});

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • args: 배열, 문자열 매개변수 목록 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

주어진 명령으로 자식 프로세스 해제

1 2
static ChildProcess child_process.spawn(String command, Object options = {});

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

exec

셸에서 명령을 실행하고 출력을 버퍼링합니다. 콜백 모드에서 실행되면 함수는 자식 프로세스 객체를 반환합니다.

1 2
static (Variant stdout, Variant stderr) child_process.exec(String command, Object options = {}) async;

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

  • (Variant stdout, Variant stderr), 자식 프로세스의 stdio 출력 내용을 반환합니다.

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

execFile

지정된 파일을 직접 실행하고 출력을 버퍼링합니다. 콜백 모드에서 실행되면 함수는 자식 프로세스 객체를 반환합니다.

1 2 3
static (Variant stdout, Variant stderr) child_process.execFile(String command, Array args, Object options = {}) async;

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • args: 배열, 문자열 매개변수 목록 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

  • (Variant stdout, Variant stderr), 자식 프로세스의 stdio 출력 내용을 반환합니다.

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

지정된 파일을 직접 실행하고 출력을 버퍼링합니다. 콜백 모드에서 실행되면 함수는 자식 프로세스 객체를 반환합니다.

1 2
static (Variant stdout, Variant stderr) child_process.execFile(String command, Object options = {}) async;

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

  • (Variant stdout, Variant stderr), 자식 프로세스의 stdio 출력 내용을 반환합니다.

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "encoding": "utf8", // 指定返回结果的编码,缺省为 utf8 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

fork

자식 프로세스에서 모듈 실행

1 2 3
static ChildProcess child_process.fork(String module, Array args, Object options = {});

호출 매개변수:

  • module: 문자열, 실행할 명령 지정
  • args: 배열, 문자열 매개변수 목록 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

자식 프로세스에서 모듈 실행

1 2
static ChildProcess child_process.fork(String module, Object options = {});

호출 매개변수:

  • module: 문자열, 실행할 명령 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "stdio": Array | String, // 子进程 stdio 配置 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

run

지정된 파일을 직접 실행하고 exitCode를 반환 콜백 모드에서 실행하면 함수는 자식 프로세스 객체를 반환합니다.

1 2 3
static Integer child_process.run(String command, Array args, Object options = {}) async;

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • args: 배열, 문자열 매개변수 목록 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

  • Integer, 자식 프로세스의 exitCode 반환

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }

지정된 파일을 직접 실행하고 exitCode를 반환 콜백 모드에서 실행하면 함수는 자식 프로세스 객체를 반환합니다.

1 2
static Integer child_process.run(String command, Object options = {}) async;

호출 매개변수:

  • command: 문자열, 실행할 명령 지정
  • options: 객체, 생성 매개변수 지정

반환 결과:

  • Integer, 자식 프로세스의 exitCode 반환

옵션에서 지원하는 내용은 다음과 같습니다.

1 2 3 4 5 6 7 8 9
{ "cwd": "", // 子进程的当前的工作目录,缺省使用当前目录 "env": {}, // 环境变量的键值对 "detached": false, // 子进程将会变成一个进程组的领导者,缺省为 false "uid": 0, // 设置用户进程的ID "gid": 0, // 设置进程组的ID "windowsVerbatimArguments": false, // 在 Windows上不执行引号或转义参数。 在 Unix 上被忽略。 当指定外壳且为 CMD 时,此选项将自动设置为true,缺省为 false "windowsHide": false // 隐藏通常在Windows系统上创建的子进程控制台窗口,缺省为 false }