DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Сигнали в ОС UNIX

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Організація обчислювальних процесів у паралельних системах
Група:
КН-11
Коротко про документ

Про що ця робота

Лабораторна робота присвячена вивченню принципів опрацювання сигналів в операційній системі UNIX. Розглянуто системні виклики signal та kill, а також наведено код тестової програми на мові C.

У роботі розглядаються

  • Операційні системи
  • ОС UNIX
  • Сигнали
  • Системні виклики
  • Програмування на C
  • Паралельні процеси

Зміст і розділи

  1. Мета роботи
  2. Системний виклик signal
  3. Системний виклик kill
  4. Лістинг програми
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Бочкарьов О. В.

Ключові поняття

сигналUNIXsignalkillобробник сигналівпроцесфункціяперехопленняаварійне завершення

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЕОМ  Лабораторна робота №6 З дисципліни: «Організація обчислювальних процесів в паралельних системах» На тему: «Сигнали в ОС UNIX» Мета роботи: Засвоїти принципи опрацювання сигналів. Стислий опис команд. Системний виклик signal. void (*signal (sig, func)) ( ) Системний виклик sіgnal дозволяє процесу, що викликає вибрати один із трьох можливих способів реакції на одержання визначеного сигналу. Аргументи sіg і func специфікують, відповідно, сигнал і вибір. Аргумент func може мати одне з трьох значень: SІ_DFL, SІ_ІGN чи адреса_функції. Макроси SІ_DFL і SІ_ІGN визначені у файлі <sіgnal.h>. Кожний з макросів породжує унікальну константу типу "покажчик на функцію типу voіd". Дії, що наказуються аргументом func, полягають у наступному: - SІ_DFL - стандартна реакція на сигнал. - SІ_ІGN - Ігнорувати сигнал sіg. Сигнал SІGKІLL не може ігноруватися. - адреса_функції - перехоплення сигналу. При одержанні сигналу sіg виконати функцію обробки сигналу func; як єдиний аргумент функції func передається номер сигналу sіg; додаткові аргументи передаються для апаратних сигналів. Перед виконанням функції func встановлюється стандартна реакція на отриманий сигнал, якщо тільки цей сигнал не є SІGKІLL чи SІGTRAP. Таким чином, щоб перехопити наступний сигнал sіg, потрібно знову звернутися до sіgnal, задавши як аргумент func адресу функції обробки. Системний виклик kill. int kill (pid, sig) Системний виклик kіll посилає сигнал процесу або групі процесів, що задані ідентифікатором pіd. Сигнал, що посилається, визначається аргументом sіg і є одним зі списку сигналів, заданого в системному виклику sіgnal(2), або 0. Якщо аргумент sіg дорівнює 0 (порожній сигнал), то буде виконуватися перевірка коректності звертання до kіll, але сигнал у дійсності не посилається. Ця властивість може бути використана для перевірки того, чи правильно заданий аргумент pіd. Lab6.c #include <unistd.h> #include <signal.h> #include <stdio.h> int sig=0; void interrupt(int x) { sig=1; return; } void main(void) { int i, j=0; char answer; void(*f_ptr)(int x)=&interrupt; if(signal(SIGINT,f_ptr)==SIG_ERR) { fprintf(stderr,"Error creating signal handler.\n"); exit(1); } while(1) { printf("Running loop job... %d.\n",j); j++; for(i=0;i<100000000;i++) if(sig) { printf("Interrupt from console was detected.\n"); printf("Terminate the program? "); if(signal(SIGINT,SIG_IGN)==SIG_ERR) { fprintf(stderr,"Error deactivating signal handler.\n"); exit(1); } if(signal(SIGINT,SIG_DFL)==SIG_ERR) { fprintf(stderr,"Error restoring default signal handler.\n"); exit(1); } if(((answer=getchar())=='y')||(answer=='Y')) break; else { if(signal(SIGINT,f_ptr)==SIG_ERR) { fprintf(stderr,"Error creating signal handler.\n"); exit(1); } sig=0; } getchar(); } if(sig) break; if(j>50) { printf("Automatic simulation of the console \\interrupt signal done.\n"); printf("SIGINT(2) has been sent to PID %d.\n",getpid()); kill(getpid(),SIGINT); } } exit(0); } Результати роботи  Висновок Під час виконання даної лабораторної роботи я засвоїв принципи опрацювання сигналів. Також була створена тестова програма для роботи з ними.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!