Рубиновая система подавления истинного выхода

Я запускаю фоновое задание по рейку. (С помощью '&'). Дело в том, что я хочу, чтобы это иногда прекращалось. Итак, я написал это:

pinger_pid = system "ps | grep rake | awk '{print $1}'"
puts pinger_pid
system "kill -9 #{pinger_pid}"

Кажется, я получаю "истинный" вывод мусора! Как я могу удалить это? Спасибо

выход:

ERROR: garbage process ID "true".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

1 ответ

Решение

Система возвращает истину или ложь, в зависимости от успешности команды.

Используйте%x для захвата вывода:

pinger_pid = %x(ps | grep rake | awk '{print $1}')
puts pinger_pid
system 'kill', '-9', pinger_pid
Другие вопросы по тегам