[<<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 }