Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Санкт–Петербургский Государственный Политехнический Университет
Факультет Технической Кибернетики
Кафедра Автоматики и Вычислительной Техники
ОТЧЕТ
О лабораторной работе
Дисциплина: СПО
Тема: Средства межпроцессорного взаимодействия
Выполнил студент группы 4081/1
Журавлев А.В.
Руководитель:
Душутина Е.В.
Санкт-Петербург
2009
Содержание:
1) Цель работы 3
2) Ненадежные сигналы 3
3) Надежные сигналы 7
4) Надежные сигналы. Модификация 9
5) Неименованные каналы 10
6) Именованные каналы 12
1. Цель работы:
Изучить следующие средства межпроцессорного взаимодействия (IPC) в ОС QNX:
1) надежные и ненадежные сигналы
2) именованные и неименованные каналы
3) очереди сообщений
4) семафоры и разделяемая память
Пункты 3 и 4 в данном отчете рассмотрены не будут в связи с трудоемкостью подбора аналога функций прилагаемой к отчету программы.
2. Ненадежные сигналы
Целью данного пункта является изучение ненадежного принципа обмена сигналами между процессами и запускающим их терминалом. Для этого были разработаны 2 программы: son.c и father.c (текст приведен в листингах ниже).
#ifndef _head_er_h_
#define _head_er_h_
#include <signal.h>
#include <stdio.h>
struct i_info {
int pid_father;
int ppid_father;
int pid_son;
} si;
#endif
Листинг 2.1. Файл Header.h
В родительском процессе получить PID сына можно разными способами, одним из которых является – занесение его в структуру верхнего уровня, к которой будет иметь доступ и родитель и потомок. Т.к. во многих частях кода используется вызов вида getpid() или getppid(), эти значение так же вынесены в общедоступную структуру для, своего рода, унификации кода.
#include "header.h"
void hndl_usr1_son(int nomer) {
printf("Son: I caught #%i\n\nSon: sending a signal to father\n",nomer);
kill(si.pid_father,SIGUSR2);
};
void hndl_usr2_son(int nomer) {
printf("Son: kawai family ^^\n");
};
int main( void )
{
int i;
si.pid_son = getpid();
printf("Son: My PID is %i\n",si.pid_son);
signal(SIGUSR1,hndl_usr1_son);
signal(SIGUSR2,hndl_usr2_son);
int flag = kill(si.pid_father,SIGUSR1);
if(flag == -1) {
printf("Son: I can't send a signal\n");
exit(1);
} else {
printf("SON: Signal was successfully send!\n");
};
pause();
pause();
printf("Son: end\n");
si.pid_son = -1;
return 0;
}
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.