Каково различие между икрой и должностным лицом?

Просто попробуйте найти более хорошие ответы,
Я думаю, что один из способов сделать это так:

array.each do |x, condition_| ## each element is [x, true] 
  (condition_ = false; next) if 
      x.nil? || x.respond_to?("string") || x+y[x] == 4
end

Также нет необходимости в for.

21
задан Johannes Kuhn 7 November 2014 в 01:53
поделиться

4 ответа

spawn expect команда не tcl команда. exec tcl команда.

spawn создает процесс. Ввод и вывод процессов соединен для ожидания для использования другим ожидать команды: send, expect и interact.

exec создает подпроцесс под tcl. В целом tcl приостановлен, пока подпроцесс не завершается. Однако один может создавать подпроцесс в фоновом режиме (использующий & как последний аргумент) и если Вы поднимаете трубку ввод и вывод правильно, tcl может взаимодействовать с подпроцессом. Это очень неуклюже и является точно видом взаимодействия, которые ожидают, был разработан для обработки гладко.

16
ответ дан 29 November 2019 в 20:51
поделиться

Более простой способ ответить на вопрос перефразирует его для выяснения, когда необходимо использовать должностное лицо по сравнению с икрой. Короче говоря, используйте икру для интерактивных команд и должностное лицо для неинтерактивных команд.

16
ответ дан 29 November 2019 в 20:51
поделиться

Стоит также отметить, что некоторые (многие?) Программы ведут себя по-разному при запуске пользователем (т. Е. По команде линия) против того, чтобы быть частью пакетного процесса / запустить из другого процесса. Фактическая разница заключается в том, есть ли терминал, подключенный к процессу.

Команда spawn, часть расширения Expect для Tcl, устанавливает все так, что исполняемая программа видит себя запущенной пользователем, а затем добавляет функциональность, чтобы позволить Программа tcl для взаимодействия с внешней программой удобным способом (т. е. сопоставление ее вывода с помощью регулярных выражений и ответвление от этих совпадений). Вещи, запускаемые через spawn, запускаются асинхронно.

Команда exec - это основная команда Tcl, которая запускает другую программу и возвращает свой вывод. Он не выполняет никаких сложных настроек, которые делает spawn, но может быть очень удобно просто для запуска программы и просмотра ее результатов (и кода возврата). Вещи, выполняемые exec, по умолчанию выполняются синхронно, но амперсанд в конце команды приводит к тому, что он запускается в фоновом режиме (очень похоже на традиционные сценарии оболочки).

Команда open, хотя обычно используется для чтения / записывать файлы, также можно использовать для запуска внешних процессов. Перед именем команды символом pipe (|) вы указываете ей запускать внешний процесс и получать доступ к дескрипторам файлов чтения / записи для взаимодействия с результирующим процессом. Это своего рода золотая середина между exec и spawn, с гораздо большим взаимодействием с доступным процессом, но без сложной среды, которую делает spawn.

5
ответ дан 29 November 2019 в 20:51
поделиться

Насколько я знаю, икра возвращает идентификатор процесса (и связывается в с, Ожидают), в то время как должностное лицо просто возвращает финал stdout, если Вы не передаете "&";. таким образом, это не будет влиять на Ваш, ожидает.

0
ответ дан 29 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

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