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

Перенаправление консольного ввода\вывода

01.06.2012, 16:07. Показов 6303. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Сабж. Нужно из моего приложения запустить другое и получать все данные, которое оно выводит в стандартный вывод. Также должна быть возможность передавать из приложения данные в стандартный ввод.
Рассматривал вариант с popen, но с помощью него можно перенаправить только один поток, а нужно 2.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2012, 16:07
Ответы с готовыми решениями:

Перенаправление вывода результата консольного приложения
Из своего приложения запускаю стороннее консольное приложение, для сохранения результата в буфер...

Разработать класс "Информация о поездах" с функционалом для консольного и файлового ввода/вывода результатов
Добрый вечер, уважаемые форумчане. Новичок нуждается в вашей помощи. Есть задание на работу с...

Реализовать базовый класс "Футбольная команда" и класс-наследник с методами консольного ввода/вывода
Составить программу на языке С++, в которой описывается класс (с добавлением наследуемого...

6
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
01.06.2012, 17:26
Два неименованных канала, fork, делаем каналы нулевым и первым дескрипторами, exec.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
01.06.2012, 23:00
https://www.cyberforum.ru/c-li... 67695.html


Цитата Сообщение от NumBot Посмотреть сообщение
которое оно выводит в стандартный вывод
Цитата Сообщение от NumBot Посмотреть сообщение
а нужно 2
Два чего?
1
14 / 14 / 0
Регистрация: 16.02.2012
Сообщений: 59
03.06.2012, 01:12  [ТС]
стандартный вывод и стандартный ввод.
Благодарю за пример, хотя с этим я уже разобрался.
Был бы рад если бы помогли понять как обойти буферизацию стандартного ввода\вывода в некоторых приложениях. На данный момент пользуюсь переполнением буфера, но это не везде работает и довольно не красиво.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
03.06.2012, 13:43
Можно заиспользовать setvbuf

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h> 
#include <unistd.h>
#include <fcntl.h>
       
int main (void)
{    
  /* Можно закомментировать эту строку, чтобы понять, рак работает без неё */
  setvbuf (stdout, NULL, _IONBF, 0);
 
  printf ("a");
  sleep (1);
  printf ("b");
  sleep (1);
  printf ("\n");
  sleep (1);
 
  return 0;
}
Добавлено через 2 минуты
Если вопрос ставился как обойти буферизацию в чужом приложении без его перекомпиляции, то, думается, никак
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
03.06.2012, 13:47
Цитата Сообщение от Evg Посмотреть сообщение
обойти буферизацию в чужом приложении без его перекомпиляции
Если собрано не статически, можно подсунуть ему свою версию стандартной библиотеки. Хотя не понятно, зачем это нужно.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
03.06.2012, 15:17
Цитата Сообщение от NoMasters Посмотреть сообщение
Если собрано не статически, можно подсунуть ему свою версию стандартной библиотеки
С printf'ом такие пляски с бубном делаются ну очень проблематично из-за неизвестного числа аргументов. А потому финт ушами можно сделать только на ассемблере без использования стека (или при помощи больших извращений, которые на время перестраивают стек)

Если глубоко покопаться, то, возможно, можно что-то переопределить для функций инициализации glibc. Но в любом случае для этого надо чётко понимать, как устроена внутри себя glibc и как обстоят дела с разными версиями

Добавлено через 36 секунд
Цитата Сообщение от NoMasters Посмотреть сообщение
Хотя не понятно, зачем это нужно
Я просто попытался трактовать твоё вопрос, потому что не было чёткого понимания, что же именно тебе надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2012, 15:17
Помогаю со студенческими работами здесь

Написать функции для работы с массивом - выделения/освобождения памяти, консольного ввода/вывода
Напишите функции: 1) выделяющую память для массива данных типа float, 2) заполняющую ячейки...

Как реализовать локализацию консольного ввода/вывода для заданного языка?
Здравствуйте, подскажите пожалуйста как добавить украинский язык в с++ в dev c++? То что я читала...

Как реализовать локализацию консольного ввода/вывода? (вывод в консоль на заданном языке)
Ребят, а можно ли сделать язык программы не русской, а например белоруской? Белорусский #include...

Использование файлового ввода-вывода вместо консольного
Как сделать так, чтобы входные файлы вводились из текстового документа, а выходные сохранялись в...

Перенаправление стандартного ввода-вывода (XCODE)
Здравствуйте, товарищи, дамы и господа. Изучаю сейчас С по одной очень занимательной книжуле:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru