1. ``
Обратная кавычка
- определено в ядре
1. a) %x{}
Percent X ‹альтернативный синтаксис для обратной кавычки
- определено в parse.y, см. обсуждение
2. system()
3. fork()
- Форк ядра #, форк процесса # < / em>
4. open()
- открыть трубу
- Kernel # open
4.a. IO.popen()
‹ведет себя так же, как open()
- открыть трубу
- IO # popen
4.b. open("|-")
- вилка к трубе
4.c. IO.popen("-")
‹ведет себя так же, как open("|-")
- вилка к трубе
- см. обсуждение
5. Open3.popen3()
require 'open3'
- stdlib Open3
6. PTY.spawn()
require 'pty'
- stdlib PTY
7. Shell.transact()
require 'shell'
- stdlib Shell
Когда следует отказаться от верной обратной связи и перейти к одному из более сложных методов?
Изменить 1. Большое спасибо Авди Гримму за его сообщения, описывающие примеры использования каждого метода: # 1 (& суть); # 2 (& суть); № 3.
Это фантастические ресурсы для ответа на Как, но они явно не составлены для ответа на , когда каждый из них должен использоваться или Почему, и поэтому ИМХО не полные ответы на этот вопрос.