ВУЗ:
Составители:
16
pid_t childPid;
int flds[2], status;
char buf[]="Message";
// Создание канала
if (pipe(flds) == -1) {
perror("Pipe");
exit(1);
}
// Ветвление процессов
switch (childPid=fork()) {
case -1: perror("fork");
exit(2);
case 0: close(flds[0]); //Потомок
printf("Child process %d\n", getpid());
write(flds[1], buf, strlen(buf));
close(flds[1]);
exit(0);
}
// Процесс - родитель
printf("Process %d\n", getpid());
close(flds[1]);
read(flds[0], buf, 80);
printf("String -> %s\n", buf);
close(flds[0]);
wait(&status);
return status;
}
В начале программы создается канал и формируются два идентификатора
файлов для этого канала (flds[0] и flds[1]). Будем считать, что у родитель-
ского процесса flds[0] используется для приема данных, поэтому в начале
секции родительского процесса необходимо закрыть канал, связанный с файло
-
вым идентификатором flds[1]. В порожденном процессе закрывается канал с
идентификатором flds[0].
Следующий пример иллюстрирует обмен данными между двумя незави-
симыми процессами через именованный канал.
pid_t childPid; int flds[2], status; char buf[]="Message"; // Создание канала if (pipe(flds) == -1) { perror("Pipe"); exit(1); } // Ветвление процессов switch (childPid=fork()) { case -1: perror("fork"); exit(2); case 0: close(flds[0]); //Потомок printf("Child process %d\n", getpid()); write(flds[1], buf, strlen(buf)); close(flds[1]); exit(0); } // Процесс - родитель printf("Process %d\n", getpid()); close(flds[1]); read(flds[0], buf, 80); printf("String -> %s\n", buf); close(flds[0]); wait(&status); return status; } В начале программы создается канал и формируются два идентификатора файлов для этого канала (flds[0] и flds[1]). Будем считать, что у родитель- ского процесса flds[0] используется для приема данных, поэтому в начале секции родительского процесса необходимо закрыть канал, связанный с файло- вым идентификатором flds[1]. В порожденном процессе закрывается канал с идентификатором flds[0]. Следующий пример иллюстрирует обмен данными между двумя незави- симыми процессами через именованный канал. 16
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »