Лабораторная работа 11 / lab1 / Отчет1
.docСанкт-Петербургский Государственный
Электротехнический Университет
Кафедра МОЭВМ
Дисциплина: Системы реального времени
Отчет по лабораторной работе № 1
«Сигналы»
Выполнил: Судаков И.А., 3351
Преподаватель: Селеджи Г.Ц.
Санкт-Петербург
2007
1. Формулировка задания
Написать программу, которая:
1.Печатает "Hello" при получении сигнала SIGALARM.
2.Печатает имя автора при получении сигнала SIGUSR1
3.Запускает процесс при получении сигнала SIGUSR2
4.Прощается и завершается при получении сигнала 29
2. Выполнение задания
2.1. Текст программы
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int i=1;
void sigAlrmHandler()
{
printf("Hello\n");
}
void sigUsr1Handler()
{
printf("Ivan Sudakov\n");
}
void sigUsr2Handler()
{
pid_t pid;
pid=fork();
if (pid==-1) printf("fork error\n");
else if (pid==0) printf("Child process created\n ");
}
void sig29Handler()
{
printf("Goodbye\n");
i=0;
}
int main( int argc, char** argv)
{
signal(SIGALRM,sigAlrmHandler);
signal(SIGUSR1,sigUsr1Handler);
signal(SIGUSR2,sigUsr2Handler);
signal(29,sig29Handler);
while(i);
return 0;
}
2.2 Протокол работы в системе
knoppix@1[knoppix]$ killall -s ALRM a.out
knoppix@1[knoppix]$ killall -s USR1 a.out
knoppix@1[knoppix]$ killall -s USR2 a.out
knoppix@1[knoppix]$ killall -s 29 a.out
knoppix@1[knoppix]$
knoppix@0[knoppix]$ a.out
Hello
Ivan Sudakov
Child process created
Goodbye
Goodbye
knoppix@0[knoppix]$