Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
puts "Что происходит?" endendМетод
killProcess.kill(1,pid1) # Послать сигнал 1 процессу pid1.Process.kill ("HUP",pid2) # Послать SIGHUP процессу pid2..Process.kill("SIGHUP",pid2) # Послать SIGHUP процессу pid3.Process.kill("SIGHUP",0) # Послать SIGHUP самому себе.Для обработки сигналов применяется метод
Kernel.traptrap(1) { puts "Перехвачен сигнал 1" }sleep 2Process.kill(1,0) # Послать самому себе.О применениях метода
trapВ модуле
Process14.1.4. Стандартный ввод и вывод
В главе 10 мы видели, как работают методы
IO.popenIO.pipeВ библиотеке
Open3.rbpopen3IOpopen3require "open3"filenames = %w[ file1 file2 this that another one_more ]inp, out, err = Open3.popen3("xargs", "ls", "-l")filenames.each { |f| inp.puts f } # Писать в stdin процесса.inp.close # Закрывать обязательно!output = out.readlines # Читать из stdout.errout = err.readlines # Читать также из stderr.puts "Послано #{filenames.size} строк входных данных."puts "Получено #{output.size} строк из stdout"puts "и #{errout.size} строк из stderr."В этом искусственном примере мы выполняем команду
ls -lcloseforkwin32-open314.2. Флаги и аргументы в командной строке
Слухи о кончине командной строки сильно преувеличены. Хоть мы и живем в век графических интерфейсов, ежедневно тысячи и тысячи программистов по тем или иным причинам обращаются к командным утилитам.
Мы уже говорили, что корнями своими Ruby уходит в UNIX. Но даже в Windows существует понятие командной строки, и, честно говоря, мы не думаем, что в обозримом будущем она исчезнет.
На этом уровне для управления работой программы применяются аргументы и флаги. О них мы и поговорим ниже.
14.2.1. Разбор флагов в командной строке
Для разбора командной строки чаще всего применяется библиотека
getoptlonggetopts.rb--Необходимо создать объект класса
GetoptLongУ объекта-анализатора есть метод
set_optionsgetПредположим, что имеется программа, понимающая следующие флаги:
-h--help-f--file-l--linesТакая программа могла бы начинаться следующим образом:
require "getoptlong"parser = GetoptLong.newparser.set_options( ["-h", "--help", GetoptLong::NO_ARGUMENT], ["-f", "--file", GetoptLong::REQUIRED_ARGUMENT], ["-l", "--lines", GetoptLong::OPTIONAL_ARGUMENT])Теперь можно в цикле вызвать метод
getbegin-endgetget_optioneacheach_option
