[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Программные каналы - Пример

Этот пример  показывает использование канала. Программа посылает текст
порожденному  процессу,   который,  в  свою  очередь,  выводит  текст,
полученный от  родителя. Эта  программа будет работать на любой версии
ОС UNIX System V.

11-13     Здесь  создается  программный  канал.  Заметьте,  что  канал
          создается до запуска подпроцесса.

16-18     После создания  подпроцесса, родительский  процесс  пишет  в
          канал текстовое сообщение.

19-22     Порожденный процесс  читает сообщение  из канала,  и выводит
          его на терминал.

Эта программа работает так:
$ pipe1
Hello, world

Файл: pipe1.c
                     ПРОГРАММНЫЕ КАНАЛЫ - ПРИМЕР

 1 #include <sys/types.h>
 2 #include <unistd.h>
 3 #define   MSGSIZE   20
 4
 5 main(int argc, char **argv)
 6 {
 7     int fd[2]; pid_t pid;
 8     static char msgout[MSGSIZE]="Hello,wo
 9     static char msgin[MSGSIZE];
10
11     if (pipe(fd) == -1) {
12          perror(argv[0]);
13          exit(1);
14     }
15
16     if ((pid=fork()) > 0) {  /* parent */
17         write(fd[1], msgout, MSGSIZE);
18     }
19     else if (pid == 0) {      /* child */
20          read(fd[0], msgin, MSGSIZE);
21          puts(msgin);
22     }
23     else {          /* cannot fork */
24          perror(argv[0]);
25          exit(2);
26     }
27
28     exit(0);
29 }