Работа с интерфейсом прикладного программирования операционной системы Linux. Шашков Б.Д. - 15 стр.

UptoLike

Составители: 

15
7. Программа запускает с помощью функции exec() новый процесс. Завершить
процесс-потомок раньше формирования родителем вызова. Повторить запуск
программы при условии, что процесс потомок завершается после формирова-
ния вызова wait(). Проанализировать результаты.
Каналы
Методические указания
Создание каналов выполняется с использованием функции
#include <unistd.h>
int pipe(int *filedes);
Функция возвращает два дескриптора:
filedes[0] - для записи;
filedes[1] - для чтения.
Обмен информацией выполняется с использование функций записи и чте-
ния API. Каналы используются для родственных процессов.
Независимые процессы могут использовать именованные каналы. Такие
каналы создаются функцией
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
#include <unistd.h>
int mknod(const char *pathname, mode_t, dev_t dev);
Первый параметр специфицирует имя создаваемого канала
, параметр mode
задает права доступа и тип (для именованного канала используется значение
S_IFIFO). Третий параметр игнорируется. Функция возвращает признак нор-
мального завершения - 0, при ошибке возвращается значение -1.
Уничтожение канала выполняется по функции
int unlink(const char *pathname)
Следующий пример иллюстрирует передачу короткого сообщения между
родительски и дочерним процессом.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
int main()
{
7. Программа запускает с помощью функции exec() новый процесс. Завершить
   процесс-потомок раньше формирования родителем вызова. Повторить запуск
   программы при условии, что процесс потомок завершается после формирова-
   ния вызова wait(). Проанализировать результаты.

                                Каналы

                        Методические указания

      Создание каналов выполняется с использованием функции
#include 
int pipe(int *filedes);
      Функция возвращает два дескриптора:
      filedes[0] - для записи;
      filedes[1] - для чтения.
      Обмен информацией выполняется с использование функций записи и чте-
ния API. Каналы используются для родственных процессов.
      Независимые процессы могут использовать именованные каналы. Такие
каналы создаются функцией
#include 
#include 
#include 
#include 
int mknod(const char *pathname, mode_t, dev_t dev);
      Первый параметр специфицирует имя создаваемого канала, параметр mode
задает права доступа и тип (для именованного канала используется значение
S_IFIFO). Третий параметр игнорируется. Функция возвращает признак нор-
мального завершения - 0, при ошибке возвращается значение -1.
      Уничтожение канала выполняется по функции
int unlink(const char *pathname)
      Следующий пример иллюстрирует передачу короткого сообщения между
родительски и дочерним процессом.
      #include 
     #include 
     #include 
     #include 
     #include 


     int main()
     {

                                    15