모듈 기본 모듈

모듈 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는 다음 문자열 중 하나 일 수 있습니다.

  • 'pipe': [ 'pipe', 'pipe', 'pipe'] (기본값)와 동등합니다.
  • 'ignore': [ 'ignore', 'ignore', 'ignore']와 동일합니다.
  • 'inherit': [ 'inherit', 'inherit', 'inherit'] 또는 [0, 1, 2]와 동일합니다.
  • 'pty': [ 'pty', 'pty', 'pty']와 동일합니다. Windows는 지원되지 않습니다.

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

  1. 'pipe': 자식 프로세스와 부모 프로세스 사이에 파이프를 만듭니다. 파이프의 부모는 child_process 개체의 stdio [fd] 속성으로 부모 프로세스에 노출됩니다. 파일 설명자 0, 1 및 2에 대해 생성 된 파이프는 각각 stdin, stdout 및 stderr로 사용할 수도 있습니다.
  2. 'ignore': fibjs에게 자식 프로세스의 파일 설명자를 무시하도록 지시합니다. fibjs는 생성 된 프로세스에 대해 항상 파일 설명자 0, 1 및 2를 열지 만 파일 설명자를 '무시'로 설정하면 fibjs가 / dev / null을 열고 하위 프로세스의 파일 설명자에 연결할 수 있습니다.
  3. '상속': 해당 stdio를 부모 프로세스로 또는 부모 프로세스에서 전달합니다. 처음 세 위치에서 이것은process.stdin, process.stdoutprocess.stderr. 다른 위치에서는 '무시'와 동일합니다.
  4. 'pty': 가상 터미널에서 자식 프로세스가 실행됩니다. 현재는 stdin과 stdout 만 유효합니다.
  5. 양의 정수 : 정수 값은 현재 상위 프로세스에서 열려있는 파일 설명 자로 해석됩니다. 공유와 유사하게 자식 프로세스와 공유됩니다.Stream> 물체의 길. 들어오는 소켓은 Windows에서 지원되지 않습니다.
  6. null 또는 정의되지 않음 : 기본값을 사용합니다. 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 }