Книга: Программирование для Linux. Профессиональный подход
Листинг 5.8. (dup2.c) Перенаправление выходного потока канала с помощью функции dup2()
Листинг 5.8. (dup2.c) Перенаправление выходного потока канала с помощью функции dup2()
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
int fds[2];
pid_t pid;
/* Создание канала. Дескрипторы обоих концов канала
помещаются в массив FDS. */
pipe (fds);
/* Создание дочернего процесса. */
pid = fork();
if (pid == (pid_t)0) {
/* Это дочерний процесс. Закрываем копию входного конца
канала */
close(fds[1]);
/* Соединяем выходной конец канала со стандартным входным
потоком. */
dup2(fds[0], STDIN_FILENO);
/* Замещаем дочерний процесс программой sort. */
execlp("sort", "sort", 0);
} else {
/* Это родительский процесс. */
FILE* stream;
/* Закрываем копию выходного конца канала. */
close(fds[0]);
/* Приводим дескриптор входного конца канала к типу FILE*
и записываем данные в канал. */
stream = fdopen(fds[1], "w");
fprintf(stream, "This is a test.n");
fprintf(stream, "Hello, world.n");
fprintf(stream, "My dog has fleas.n");
fprintf(stream, "This program is great.n");
fprintf(stream, "One fish, two fish.n");
fflush(stream);
close(fds[1]);
/* Дожидаемся завершения дочернего процесса. */
waitpid(pid, NULL, 0);
}
return 0;
}
- Каналы и перенаправление
- 8.4. Функции как данные
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Повышение производительности приложений с помощью хранимых процедур
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- Организация пользователей в группы с помощью ролей
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- Сообщение канала
- 5.12.2 Открытие поименованного канала
- Листинг 15.11. Код для загрузки файла с Web-сервера