Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 13

Программа, реализующая действия команды ls и организующая конвейер

12.06.2013, 02:57. Показов 6738. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, выполняющую действия, аналогичные команде
ls -l | grep Аргумент | sort
(то есть, программа должна организовать вызов команд ls, grep, sort с организацией конвейера между ними)
Аргумент для grep должен задаваться в командной строке программы.

Помогите разобраться, пожалуйста, хочу понять алгоритм действий, какие функции использовать.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2013, 02:57
Ответы с готовыми решениями:

Программа реализующая действия со стеком. Формирование и вывод содержимого стека на экран дисплея
Помогите пожалуйста с программой, или приведите пример пример программы реализующей действия со стеком. Формирование и вывод содержимого...

Передача вывода команды через конвейер
Здравствуйте! Помогите, пожалуйста, понять принцип передачи вывода\результата выполнения команды по конвейеру в bash. Вот, например: ...

Программа, реализующая стек
Нужно сделать программу, реализующую стек в виде динамической структуры данных. Информационной частью элемента стека является символ. В...

1
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 13
16.06.2013, 18:40  [ТС]
Лучший ответ Сообщение было отмечено 06041992 как решение

Решение

Идея программы такова: создаём первый канал с помощью pipe(), создаём родительский процесс с помощью fork(), дальше осуществляем ветвление на дочерний и родительский процесс, дочерний процесс делает ls -l, родительский процесс порождает ещё один с помощью второго fork(), дальше снова осуществляем ветвление на дочерний и родительский, также создаём второй канал. Дочерний процесс должны привязать к ls -l т.е. к предыдущему каналу и к новому каналу, к которому также будет привязан sort. Как я понимаю, sort у нас окажется родительским процессом, который мы затем и завершаем. Ниже пример программы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdio.h"
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char** argv) {
int fd[2];
int p[2];
    int newp1, newp2,newp3;
    if (pipe (p)<0) {
       printf ("Oshibka sizdaniya kanala\n");
       return 1;
} 
if ((newp1=fork())<0){
    printf ("oshibka 1-go fork()\n");
    return 2;
}
if (newp1==0){
close(p[0]);
dup2(p[1],1);
execlp("ls","ls","-l","/bin",NULL);
printf("oshibka zapuska ls\n");
return 3;
} 
else {
  if ((newp2=fork())<0) {
    printf("oshibka 2-go fork()\n");
    return 2;
  }
}
  if(pipe(fd)<0)
  printf(“oshibka sozdaniya kanala\n”);
  return 1;
  }
 
if(newp2==0){
 close(p[1]);
 close(fd[0]);
 dup2(p[0],0);
 dup2(fd[0],0);
 execlp("grep","grep",argv[1],NULL);
 printf("oshibka zapuska grep\n");
 return 3;
} 
else {
 if(newp3==0){
 close(fd[1]);
 dup2(fd[0],0); 
 execlp("sort","sort",NULL);
 printf("oshibka zapuska sort\n");
 return 3;
}
}
waitpid(newp3,NULL,0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2013, 18:40
Помогаю со студенческими работами здесь

Программа, реализующая лабиринт.
pass(1,2,1). pass(1,4,1). pass(2,3,1). pass(2,5,2). pass(3,10,4). pass(4,5,1). pass(4,6,1). pass(5,8,1). pass(6,7,1). ...

Программа реализующая алгоритм шифрования
Напишите программу, реализующую алгоритм шифрования с помощью шифра с использованием восьмибуквенного кодового слова (например, можно...

Программа реализующая запрос GET и HEAD
Задача: Написать программу, реализующую функции HTTP-сервера: запрос «GET /» и «HEAD». Содержимое, передаваемое в ответ на запрос GET /,...

нужна программа в С++ реализующая метод Гаусса
Ребят нужна программа в С++ реализующая метод Гаусса!Вот такое задание дали)

Программа реализующая построение графика функции
#include &lt;GL/glut.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;vector&gt; int count...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru