OS_LR1_2 (Задания к лабораторным работам), страница 2

2016-04-06СтудИзба

Описание файла

Файл "OS_LR1_2" внутри архива находится в папке "Задания к лабораторным работам". Документ из архива "Задания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "операционные системы" из 8 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "OS_LR1_2"

Текст 2 страницы из документа "OS_LR1_2"



Пара шаблон-действие имеет вид:

шаблон { действие }

Шаблон или действие можно не указывать. Если для шаблона не задано действие, соответствующая строка просто выдается. Если для действия не указан шаблон, это действие выполняется для каждой входной строки. Пары шаблон- действие разделяются переводами строк или точками с запятыми.

Как уже упоминалось, шаблоны представляют собой произвольные логические комбинации (с использованием !, ||, && и круглых скобок) относительных выражений и расширенных регулярных выражений. Относительным называется любое из следующих выражений:

выражение оператор_отношения выражение

выражение оператор_сопоставления регулярное_выражение

выражение in имя_массива

(выражение, выражение, ... ) in имя_массива



где оператор_отношения представляет собой один из шести операторов отношения в языке C, а оператор_сопоставления - это либо ~ (содержит), либо !~ (не содержит). Выражением может быть арифметическое выражение, относительное выражение, специальное выражение переменная in массив или их логическая комбинация.

В шаблонах расширенные регулярные выражения необходимо заключать в косые черты (/). Отдельное регулярное выражение в шаблоне применяется ко всей строке. Расширенные регулярные выражения могут также использоваться в относительных выражениях. Шаблон может состоять из двух шаблонов через запятую; в этом случае действие выполняется для всех строк между соответствующей первому шаблону и следующей соответствующей второму шаблону.

Специальные шаблоны BEGIN и END можно использовать для получения управления перед чтением первой входной строки и после прочтения последней входной строки, соответственно. Эти ключевые слова нельзя сочетать с другими шаблонами.

Для задания разделителя полей можно использовать расширенное регулярное выражение, используя опцию -F разделитель или присваивая выражение встроенной переменной FS. По умолчанию, начальные пробелы в строках игнорируются, а поля разделяются произвольным количеством пробелов и/или символов табуляции.

Однако, если переменной FS присвоено значение, начальные пробелы не будут игнорироваться.

Имеются и другие встроенные переменные:ARGC количество аргументов командной строки

ARGV массив аргументов командной строки

ENVIRON массив переменных среды; в качестве индексов используются имена переменных

FILENAME имя текущего входного файла

FNR порядковый номер текущей записи в текущем файле

FS регулярное выражение, задающее разделитель входных полей (по умолчанию - пробелы и символы табуляции)

NF количество полей в текущей записи

NR порядковый номер текущей записи

OFMT выходной формат для чисел (по умолчанию - %.6g)

OFS разделитель выходных полей (по умолчанию - пробел)

ORS разделитель выходных записей (по умолчанию - новая строка)

RS разделитель входных записей (по умолчанию - новая строка)

SUBSEP разделитель нескольких индексов (по умолчанию - символ с кодом 034)



Разделители, задаваемые с помощью опции -F или переменных OFS, ORS и FS, могут содержать символы дополнительного набора. Действие представляет собой последовательность операторов. Имеются следующие операторы:

if ( выражение ) оператор [else оператор]

while ( выражение ) оператор

do оператор while ( выражение )

for ( выражение ; выражение ; выражение ) оператор

for ( переменная in массив ) оператор

delete массив[индекс] # удаление элемента массива

break

continue

{ [оператор] ... }

выражение # обычно, переменная = выражение

print [список_выражений] [>выражение]

printf формат [, список_выражений] [>выражение]

next # пропустить оставшиеся шаблоны для этой строкиexit [выражение] # пропустить остальные входные

# строки; выражение задает

# код возврата



return [выражение]

Операторы заканчиваются точкой с запятой, новой строкой или закрывающей фигурной скобкой. Пустой список_выражений означает всю входную строку. Выражения будут иметь строковые или числовые значения, в зависимости от строения, и строятся с использованием операторов +, -, *, /, %, ^ и конкатенации (выполняемой при записи подряд). В выражениях также можно использовать операторы ++, --, +=, -=, *=, /=, %=, ^=, >, >=, <, <=, ==, !=, ?:. Переменные могут быть скалярами, элементами массивов (записывается как x[i]) или полями. Переменные инициализируются пустыми строками или нулями. Индексами массивов могут быть любые строки, не обязательно только числовые; это позволяет реализовать ассоциативную память. Допускается использование нескольких индексов, например [i,j,k]; составные элементы конкатенируются, разделяясь значением встроенной переменной SUBSEP. Строковые константы берутся в двойные кавычки (""), причем в них распознаются стандартные управляющие символы языка C.



Оператор print выдает аргументы в стандартный выходной поток или в файл, если указано >выражение, или по конвейеру, если указано |команда. Аргументы разделяются текущим разделителем выходных полей и завершаются разделителем выходных записей. Оператор printf форматирует свой список_выражений в соответствии с указанным форматом (см. fprintf(3S)). Встроенная функция close(выражение) закрывает указанный файл или поток, задаваемый выражением.



Математические функции atan2, cos, exp, log, sin, sqrt являются встроенными.



Другие встроенные функции включают:gsub(for, repl, in) работает аналогично sub (см. ниже), но заменяет последовательные вхождения регулярного выражения (как команда глобальной подстановки в ed).

index(s, t) возвращает позицию первого вхождения строки t в строке s, или 0, если такой подстроки в s нет.

int усекает до целого значения.

length(s) возвращает длину в байтах аргумента, рассматриваемого как строка, или длину входной строки, если аргумент не указан.

match(s, re) возвращает позицию вхождения регулярного выражения re в строке s, или 0, если такого выражения в строке нет. Переменная RSTART устанавливается в начальную позицию соответствующей подстроки (которая совпадает с возвращаемым значением), а переменная RLENGTH устанавливается равной длине соответствующей подстроки.

rand случайное число в диапазоне (0, 1).

split(s, a, fs) разбивает строку s на массив элементов a[1], a[2],... a[n] и возвращает их количество - n. В качестве разделителя используется регулярное выражение fs или разделитель полей FS, если аргумент fs не задан.

srand устанавливает базовое значение (seed) для функции rand

sprintf(fmt, expr, expr,...) форматирует выражения в соответствии с форматом fprintf(3S), задаваемым аргументом fmt, и возвращает получившуюся в результате строку.

sub(for, repl, in) подставляет строку repl вместо первого вхождения регулярного выражения for в строку in и возвращает количество подстановок. Если строка in не указана, awk выполняет подстановки в текущей записи ($0).

substr(s, m, n) возвращает n-символьную подстроку строки s, начиная с позиции m.

Поддерживаются также следующие встроенные функции ввода/вывода:

close(имя_файла)

закрывает файл или поток с именем имя_файла.

cmd | getline

направляет выходной поток команды cmd функции getline; каждый последующий вызов getline возвращает следующую строку из выходного потока cmd.

getline

устанавливает $0 в следующую входную запись из текущего входного файла.

getline <файл

устанавливает $0 в следующую запись из файла.

getline x

устанавливает значение переменной x.

getline x <файл

устанавливает x значение следующей записи из файла.

system(команда)

выполняет команду и возвращает ее код возврата.



Все формы функции getline возвращают 1 в случае успешного чтения, 0 - в случае конца файла и -1 в случае ошибки.



awk также позволяет создавать функции, определяемые пользователем. Такие функции можно определять (в позиции шаблона пары шаблон-действие) следующим образом

function имя(аргументы,...) { операторы }

или

func имя(аргументы,...) { операторы }

Аргументы функции передаются по значению, если являются скалярами, и по ссылке, если представляют собой имена массивов. Имена аргументов локальны по отношению к функции; все остальные имена переменных - глобальные. Вызовы функций могут быть вложенными, а сами функции - рекурсивными. Оператор return можно использовать для возвращения значения из функции.



ПРИМЕРЫ

Выдать строки длиннее 72 символов:

length > 72

Выдать первые два поля в обратном порядке:

{ print $2, $1 }

То же, но входные поля разделены запятой и/или пробелами и символами табуляции:

BEGIN { FS = ",[ \t]*|[ \t]+" }

{ print $2, $1 }

Просуммировать первый столбец, выдать сумму и среднее значение:

{ s += $1 }

END { print "sum is", s, " average is", s/NR }

Выдать поля в обратном порядке:

{ for (i = NF; i > 0; --i) print $i }

Выдать все строки между парами шаблонов start/stop:

/start/, /stop/

Выдать все строки, первое поле в которых отличается от первого поля предыдущей строки:

$1 != prev { print; prev = $1 }

Имитировать команду echo(1):

BEGIN {

for (i = 1; i < ARGC; i++)

printf "%s", ARGV[i]

printf "\n"

exit

}

Выдать файл, заполняя номера страниц, начиная с 5:

/Page/ { $2 = n++; }

{ print }

Если эта программа находится в файле по имени prog, следующая команда распечатает файл input, пронумеровав его страницы начиная с 5:

awk -f prog n=5 input.



  1. Разработка ПО

Полнофункциональной оболочки для программирования на языках в данной версии ОС не установлено. Для ввода программного кода используются редакторы vi, emac, встроенный редактор mc.

Компилятором для ЯВУ Си является программа gcc. В простейшем случае( в рамках лабораторной работы) для компиляции программы достаточно набрать.

gcc

Выходной исполняемый файл будет называться a.out.

Не забывайте, что для запуска программы из текущей директории надо набирать ./a.out





  1. Задание

Создать файл-сценарий «убивающий» ранее запущенный процесс.

1. Ввести программу в файл:

main() {for(;;);}

2. Скомпилировать программу компилятором gcc.

3. Используя команды grep и awk написать сценарий, «убивающий» процесс a.out.

4. Запустить программу в фоновом режиме или с параллельного терминала.

5. Запустить файл-сценарий, убивающий процесс.

6. Убедиться, что процесс завершен.







Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее