ВУЗ:
Составители:
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(). Проанализировать результаты. Каналы Методические указания Создание каналов выполняется с использованием функции #includeint 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
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »