Почему в узле child_process `spawn` не имеет опции killSignal, а` spawnSync` имеет?

Обычно игнорируемые, но важные свойства неизменяемых объектов

. Добавляя к ответу, предоставленному @ nsfyn55, необходимо также учитывать следующие аспекты для неизменяемости объекта, которые относятся к prime важность

Рассмотрим следующие классы:

public final class ImmutableClass {

  private final MutableClass mc;

  public ImmutableClass(MutableClass mc) {
    this.mc = mc;
  }

  public MutableClass getMutClass() {
    return this.mc;
  }
}

public class MutableClass {

  private String name;

  public String getName() {
    return this.name;
  }

  public void setName(String name) {
    this.name = name;
  }
}


public class MutabilityCheck {

public static void main(String[] args) {

  MutableClass mc = new MutableClass();

  mc.setName("Foo");

  ImmutableClass iMC = new ImmutableClass(mc);

  System.out.println(iMC.getMutClass().getName());

  mc.setName("Bar");

  System.out.println(iMC.getMutClass().getName());

  }

 }

Ниже приведен вывод из MutabilityCheck:

 Foo
 Bar

Важно отметить, что

  1. Построение изменяемых объектов на неизменяемом объекте (через конструктор) либо путем «копирования», либо «клонирования» в переменные экземпляра неизменяемого, описываемые следующими изменениями:
    public final class ImmutableClass {
    
       private final MutableClass mc;
    
       public ImmutableClass(MutableClass mc) {
         this.mc = new MutableClass(mc);
       }
    
       public MutableClass getMutClass() {
         return this.mc;
       }
    
     }
    
     public class MutableClass {
    
      private String name;
    
      public MutableClass() {
    
      }
      //copy constructor
      public MutableClass(MutableClass mc) {
        this.name = mc.getName();
      }
    
      public String getName() {
        return this.name;
      }
    
      public void setName(String name) {
       this.name = name;
      } 
     }
    

по-прежнему не гарантирует полную неизменность, поскольку из класса MutabilityCheck все еще действует следующее:

  iMC.getMutClass().setName("Blaa");
  1. Однако запуск MutabilityCheck с изменениями, внесенными в 1., приведет к на выходе:
    Foo
    Foo
    
  2. . Чтобы достичь полной неизменяемости объекта, все его зависимые объекты также должны быть неизменными
0
задан ydydyd 28 February 2019 в 19:09
поделиться

1 ответ

Поскольку эта опция связана с опцией timeout.

В spawn вы должны решить, когда вы убьете процесс.

Пример: ( из документа )

const { spawn } = require('child_process');
const grep = spawn('grep', ['ssh']);

grep.on('close', (code, signal) => {
  console.log(
    `child process terminated due to receipt of signal ${signal}`);
});

// Send SIGHUP to process
grep.kill('SIGHUP');
0
ответ дан bato3 28 February 2019 в 19:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: