Использование методов управления процессом Unix в Ruby

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

существуют некоторые основные характеристики, которые чрезвычайно полезны, и Вы закончите использование все время. Те, которые я люблю большинство:

  • Выделение блока (Ctrl-V)
  • Макрос, записывающий (q)
  • Виртуальное редактирование (: набор ve=all)
  • Регулярные выражения
  • Передача по каналу к внешним программам Unix
  • Ключевые отображения
  • Автозавершение (C-p, C-x C-p, C-x C-f)
  • operation+movement комбинация (это удивительно мощно)

Спрашивает других программистов, какие функции они находят самыми полезными и принимают тех, которые соответствуют лучше Вашему мозгу. Идеи кражи от других людей .vimrc с ( вот мой )

10
задан Cœur 2 May 2017 в 17:03
поделиться

2 ответа

Ах, да ... опасность слов «Мы должны делать больше этого» без объяснения того, что каждый из них делает и в каких обстоятельствах вы бы их использовали. Для чего-то вроде delayed_job вы можете даже использовать fork , не зная, что вы используете fork . Тем не менее, это действительно не имеет значения. Райан говорил об использовании fork для предварительной установки серверов. delayed_job будет использовать fork для превращения процесса в демона. Один и тот же системный вызов, разные цели. Запуск delayed_job на переднем плане (без вилки ) и в фоновом режиме (с вилкой ) приведет к незначительной разнице в производительности.

Однако, если вы напишите сервер, который принимает одновременные соединения, теперь совет Райана верен.

  • fork : создает копию исходного процесса
  • execve : прекращает выполнение текущего файла и начинает выполнение нового файла в том же процессе (очень полезно в задачах rake)
  • pipe : создает канал (два файловых дескриптора, один для чтения, один для записи)
  • пара сокетов : как канал, но для сокетов
  • выберите : давайте дождемся готовности одного или нескольких файловых дескрипторов с таймаутом
  • kill : используется для отправки сигнала процессу
  • sigaction : позволяет вам изменить то, что происходит, когда процесс получает сигнал
3
ответ дан 4 December 2019 в 04:01
поделиться

5 месяцев спустя вы можете посмотреть мое решение на http://github.com/antarestrader/Updater. Посмотрите lib/updater/fork_worker.rb

1
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

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